1. ffmpeg for x86
沒有實現android media interface,標準流程是通過surface輸出解碼後的YUV視頻數據,audioTrack輸出解碼後的音頻PCM數據。簡單說就是不能用該代碼樹上的代碼來完成多媒體的播放,但是,個人認爲ffmpeg本身就不是播放器,所以用ffmpeg來完成reader、demuxer和decoder的功能就足矣,所以該項目還是很有用處的。
2. mplayer for x86
http://www.android-x86.org (由幾位華人工程師維護,訪問需要翻牆軟件)
-
repo init -u git://git.android-x86.org/manifest.git -b froyo-x86
-
repo sync
在android-x86開源項目中froyo分支已經將mplayer移植到x86上,完成了跟android多媒體框架的對接,是android(x86)下真正的播放器,默認沒有打開mplayer編譯的支持,需要自己修改配置來完成mplayer的添加,代碼在external/mplayer下。
MPlayer.cpp實現了跟android meida interface的對接,接口函數有setDataSource、 prepare、prepareAsync、start、pause、 seek、 stop、 reset等。mplayer_lib.c是對mplayer API的封裝,供MPlayer.cpp使用。在x86平臺下,使能了MMX,SSE等彙編指令的優化,解碼效率很高。遺憾的是NVIDIA硬件解碼H264、MPEG4的驅動和so庫android平臺下還不支持(linux操作系統下是支持的)。
3. VLC
正在進行往android平臺的移植:git://git.videolan.org/vlc/vlc-android.git
4. GStreamer for android
因爲支持標準的openMAX接口,被多個芯片公司採用的優秀的多媒體框架(Marvell的PXA系列,TI的OMAP系列等等),同時也對ffmpeg做了openMAX封裝,結構如下圖:
國外一個最有名的GStreamer for Android項目
5. Opencore
架構紛繁複雜,逐漸會被Android棄用。
6. Stagefright
Google實現的一個輕量級MMF,功能會逐步完善起來,也許它能成爲未來的一個發展方向。