本開源Android播放器基於ffmpeg開發,音視頻在jni層直接輸出,不使用java層的bmp和audiotrack輸出,支援arm彙編加速,超級精簡。
本開原始碼播放器使用的音視頻解碼代碼來源於ffmpeg-0.6.3(http://www.ffmpeg.org),
jni銜接代碼和java層代碼來源於havlenapetr(https://github.com/havlenapetr/FFMpeg)。
移植ffmpeg到android的常規關鍵點網上有很多的文章可以參考,也可以用檔案夾比較工具比較一下,看看添加修改刪除了那些檔案。
本開原始碼的編譯環境
1: Android SDK 2.2版,
2: NDK r4版,注意要匯出NDK宏,
3: IDE開發環境是 eclips 3.5 版
4: libffplay.so是在Android 2.2版源碼分類樹中編譯出來的,使用Ubuntu10.04和VMware7.1.1版,目前源碼不公開
5: libffmpeg.so編譯步驟,cd /cygwin/c/ffplay, ./config_r4.sh, $NDK/ndk-build
6: PC主機開發環境是windows xp。
此開原始碼解決的特別關鍵點如下:
1:arm彙編代碼編譯支援,主要是在幾個.mk檔案中添加LOCAL_ARM_MODE := arm語句,
在config_r4.sh檔案中添加--arch=armv5te和--enable-asm 等開關。
2:在ffmpeg config_r4.sh設定檔中關閉了一些不用的選項後,串連時總是報一些莫名其妙的串連錯誤,
本開原始碼給出終極解決方案(在/jni/jni/Android.mk檔案中添加 LOCAL_LDLIBS += C:/ffplay/bin/ndk/local/armeabi/libavcodec.a等語句)。
3:修改havlenapetr中的視頻顯示錯誤bug,經測試havlenapetr原始代碼在模擬器設定為320x480時顯示正確,在更大的解析度下顯示錯誤,
本開原始碼已修改好此bug,現在無論什麼解析度都可以正確顯示。
4:jni銜接代碼相比havlenapetr做了很好的精簡,更方便網友們研習。
5:此開原始碼不包括play,pause,stop,seek和視音頻同步等功能實現代碼,這部分代碼不開源。
歡迎下載研習: http://files.cnblogs.com/mcodec/ffplay1.7z
apk包下載: http://files.cnblogs.com/mcodec/ffplay1.apk.7z
轉自 http://www.cnblogs.com/mcodec/archive/2011/08/11/2114714.html?login=1
歡迎訪問 直通車 http://blog.csdn.net/maikforever/article/details/6709147