天天看點

關于3G手機平台的開發研究方案

在3G快速發展的同時,3G網絡要求具有良好的服務品質、後向相容性及其與固網的相容性、以及高速多媒體業務能力等,進而推進業務的标準化,實作開放的終端業務應用平台。

根據本人的一些開發經驗和網絡上一些資料, 大概總結一些3G手機平台的多媒體支援情況和開發思路。

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:

 手機很早就定位在多媒體娛樂, 音視訊格式的支援還是比較全。

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.

開發是一個漫長等待的過程。它是一個對使用者的需求進行去粗取精、去僞存真、正确了解,然後把它用軟體工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。經分析、設計、編碼和測試。市場競争越來越激烈,如何在有限的時間内完成項目,滿足客戶的需求成為企業決策者所需要面對的現實。企業組織開發團隊時可根據自身的研發力量靈活決策,以較小的人力資源投入獲得較高的收益。而把主要精力投入項目的業務邏輯處理上,加快項目開發進展,進而為企業赢得市場先機。AnyChat能讓企業越過複雜的底層技術實作,長期積累的音視訊即時通訊應用經驗,已成為音視訊開發商們技術方案提供商的有利條件。

本文轉自 fanxiaojun 51CTO部落格,原文連結:http://blog.51cto.com/2343338/529803,如需轉載請自行聯系原作者

繼續閱讀