• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧
  • 欢迎加博主微信:jiang_shaobo

主流手机平台的多媒体开发方案研究

点滴 admin 6年前 (2014-03-14) 223次浏览 已收录 扫描二维码

根据本人的一些开发经验和网络上一些资料, 大概总结各个手机平台的多媒体支持情况和开发思路。 分windows mobile, symbian, mtk, android, iphone, 展讯, brew, Blackberry。

1. Windows mobile:

MS一直定位在中高端商务人群,对多媒体的支持相对落后。 WMP(windows media player)看起来很弱, 默认只支持ms自家格式wmv/wma/avi, 其他格式就得用户自己扩展。其实WMP是基于DirectShow开发的播放器,只要用户给系统安装各种decoder和demuxer filter, wmp就能支持各种格式, 常用的是ffdshow和Haali Media Splitter。还有从realplayer破解出来的filter可支持rm/rmvb。

所以, 要在wm上开发一款播放器思路基本就以下三种:

1) 扩展Windows Media Player:使用User Interface Plug-ins,可以为wmp定制各种皮肤。如果要在别的程序里要控制WMP,要用到User Interface Background Plug-ins,这就牵涉到COM服务器的知识。 详细可参考王克伟博客

2) 基于TCPMP做二次开发。 TCPMP是wince/wm上最流程的多媒体播放器开源工程(之后就闭源商业化为Coreplayer),最后版本是0.72rc,支持mp3/aac/wma/mp4/avi/asf和http协议。TCPMP是在wm上快速开发一款播放器的最佳选择。 网上有一些修改TCPMP皮肤的方法。而如何利用plug-in为tcpmp增加rtsp协议或别的文件格式支持, 则很少有人分享。 我也不甚了解(我曾试图从tcpmp剥离3gp解析器终告失败)。

3) 完全自己开发播放器。使用DirectShow或者开源库。如解码mp3的libmad, rtsp的live555或mpeg4ip,视频解码移植xvid或ffmpeg.

2. Symbian:

NOKIA手机很早就定位在多媒体娱乐,音视频格式的支持还是比较全。3gp/mp4,h.263/mpeg4/aac/amr/mp3/wma是baseline, 更有高端智能机有支持h.264。所以在symbian上开发一个播放器的思路主要有以下两种:

1) 调用symbian提供的接口: 视频播放的话, 可直接用CVideoPlayerUtility类。 realplayer支持什么格式,你就能支持什么格式。包括3gpp流媒体播放 ;音频播放的话, CMdaAudioPlayerUtility可做本地播放,CMdaAudioOutputStream可做流式播放, 而MMFCodec解码效率比CMdaAudioOutputStream 低一点,但对手机兼容性更好,因为本来就是给第三方用的。

2) 完全自己开发:本地播放器基本没必要了。网络播放器的话,不要听信symbian推荐的单线程多AO的方案,因为很可能出现下载AO和解码显示抢CPU的状况。

3. MTK:

6223/6225视频都只支持motion jpeg AVI, 6253/6235则支持MP4 Encode/Decode ; 音频解码6225/6253/6235均支持amr/mp3/aac/wav,6223则支持amr/mp3/wav。 MTK上做多媒体应用主要面临两个问题 1)运行效率 2) rom/ram占用。

1) 音乐播放器: 调用mdi_audio_play_string_with_vol_path

2) 视频播放器: 自己软解码而且必须做裁剪和优化, 流程参考MTK系统播放器。

4. Android/Ophne:

Android的多媒体架构基于第三方的Packet Video公司的OpenCore Platform来实现,支持所有通用的音频,视频,静态图像格式,CODEC(编解码器)使用OpenMAX 1L interface 接口进行扩展,可以方便得支持hardware / software codec plug-ins支持的格式包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等。流媒体支持3GPP,HTTP,RTSP/RTP, 甚至还有基于H324-M standard来支持视频会议。OpenCore通过C/C++实现,通过JAVA的JNI方式调用。

所以,ANDROID应用开发一般不会过多研究OPENCORE,而是调用上层的MEDIA API即可。 多媒体应用可以被快速方便的开发出来, 当然也就意味着….. 多媒体开发人员有沦为白菜的危险。 做LINUX底层的另当别论:)

5. Iphone

IPHONE作为新一代智能手机的标杆,多媒体性能自是十分强大。音频支持mp3/aac/wav, 视频则只支持MP4/MOV(mpeg4和h.264编码)。 IPHONE出于版权和专有格式的考虑, 通过ITUNES拷贝文件时, 只能拷贝IPHONE支持的MP4文件。 这样的做法封闭但也符合APPLE的风格,呵呵。

所以,在IPHONE上开发本地播放器是没有必要的。 网络播放器就按一般套路来移植,因为iphone支持标准C/C++和object C.

6. 展讯

不太开放,对第三方开发不是很友好的国产平台。连52rd的BBS上都没有展讯板块… 支持h.263/mpeg4硬解码,音频支持格式不详。 不过由于其硬件性能很差(CPU主频仅50多M), 做多媒体应用难度比较大。

7. BREW:

高通推出的手机平台,主要支持C/C++。但由于与CDMA绑定 在我国用户数太少。 而现在中国电信也把终端的开发平台由BREW转向J2ME,开发前景看淡。

8. BlackBerry:

“黑莓”专用操作系统, blackberry的多媒体支持十分全面,视频文件支持: MPEG4 SP/ H.263/H.264, WMV; 音频文件支持: MP3/ AAC/WMA。 采用JAVA编写。开发者可用J2ME API或者专有的blackberry API。

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。