在3G快速發(fā)展的同時,3G網絡要求具有良好的服務質量、后向兼容性及其與固網的兼容性、以及高速多媒體業(yè)務能力等,從而推進業(yè)務的標準化,實現(xiàn)開放的終端業(yè)務應用平臺。
根據(jù)本人的一些開發(fā)經驗和網絡上一些資料, 大概總結一些3G手機平臺的多媒體支持情況和開發(fā)思路。
1. Windows mobile:
MS一直定位在中高端商務人群,對多媒體的支持相對落后。 WMP(windows media player)看起來很弱, 默認只支持ms自家格式wmv/wma/avi, 其他格式就得用戶自己擴展。其實WMP是基于DirectShow開發(fā)的播放器,只要用戶給系統(tǒng)安裝各種decoder和demuxer filter, wmp就能支持各種格式, 常用的是ffdshow和Haali Media Splitter。還有從realplayer破解出來的filter可支持rm/rmvb。
所以, 要在wm上開發(fā)一款播放器思路基本就以下三種:
1) 擴展Windows Media Player: 使用 User Interface Plug-ins, 可以為wmp定制各種皮膚。如果要在別的程序里要控制WMP,要用到 User Interface Background Plug-ins, 這就牽涉到COM服務器的知識。 詳細可參考 王克偉博客
2) 基于TCPMP做二次開發(fā)。 TCPMP是wince/wm上最流程的多媒體播放器開源工程(之后就閉源商業(yè)化為Coreplayer),最后版本是0.72rc,支持mp3/aac/wma/mp4/avi/asf和http協(xié)議。TCPMP是在wm上快速開發(fā)一款播放器的最佳選擇。 網上有一些修改TCPMP皮膚的方法。而如何利用plug-in為tcpmp增加rtsp協(xié)議或別的文件格式支持, 則很少有人分享。 我也不甚了解(我曾試圖從tcpmp剝離3gp解析器終告失敗)。
3) 完全自己開發(fā)播放器。使用DirectShow或者開源庫。如解碼mp3的libmad, rtsp的live555或mpeg4ip,視頻解碼移植xvid或ffmpeg.
2. Symbian:
手機很早就定位在多媒體娛樂, 音視頻格式的支持還是比較全。
3gp/mp4,h.263/mpeg4/aac/amr/mp3/wma是baseline, 更有高端智能機有支持h.264。所以在symbian上開發(fā)一個播放器的思路主要有以下兩種:
1) 調用symbian提供的接口: 視頻播放的話, 可直接用CVideoPlayerUtility類。 realplayer支持什么格式,你就能支持什么格式。包括3gpp流媒體播放 ; 音頻播放的話, CMdaAudioPlayerUtility可做本地播放,CMdaAudioOutputStream可做流式播放, 而MMFCodec解碼效率比CMdaAudioOutputStream 低一點,但對手機兼容性更好,因為本來就是給第三方用的。
2) 完全自己開發(fā): 本地播放器基本沒必要了。 網絡播放器的話, 不要聽信symbian推薦的單線程多AO的方案,因為很可能出現(xiàn)下載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) 視頻播放器: 自己軟解碼而且必須做裁剪和優(yōu)化, 流程參考MTK系統(tǒng)播放器。
4. Android/Ophne:
Android的多媒體架構基于第三方的Packet Video公司的OpenCore Platform來實現(xiàn),支持所有通用的音頻,視頻,靜態(tài)圖像格式,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++實現(xiàn),通過JAVA的JNI方式調用。
所以,ANDROID應用開發(fā)一般不會過多研究OPENCORE,而是調用上層的MEDIA API即可。 多媒體應用可以被快速方便的開發(fā)出來, 當然也就意味著..... 多媒體開發(fā)人員有淪為白菜的危險。 做LINUX底層的另當別論。
5. Iphone
IPHONE作為新一代智能手機的標桿,多媒體性能自是十分強大。音頻支持mp3/aac/wav, 視頻則只支持MP4/MOV(mpeg4和h.264編碼)。 IPHONE出于版權和專有格式的考慮, 通過ITUNES拷貝文件時, 只能拷貝IPHONE支持的MP4文件。 這樣的做法封閉但也符合APPLE的風格。
所以,在IPHONE上開發(fā)本地播放器是沒有必要的。 網絡播放器就按一般套路來移植,因為iphone支持標準C/C++和object C.
開發(fā)是一個漫長等待的過程。它是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然后把它用軟件工程開發(fā)語言(形式功能規(guī)約,即需求規(guī)格說明書)表達出來的過程。經分析、設計、編碼和測試。市場競爭越來越激烈,如何在有限的時間內完成項目,滿足客戶的需求成為企業(yè)決策者所需要面對的現(xiàn)實。企業(yè)組織開發(fā)團隊時可根據(jù)自身的研發(fā)力量靈活決策,以較小的人力資源投入獲得較高的收益。而把主要精力投入項目的業(yè)務邏輯處理上,加快項目開發(fā)進展,從而為企業(yè)贏得市場先機。AnyChat能讓企業(yè)越過復雜的底層技術實現(xiàn),長期積累的音視頻即時通訊應用經驗,已成為音視頻開發(fā)商們技術方案提供商的有利條件。http://www.anychat.cn/ |