基於ffmpeg的Android播放器開原始碼

來源:互聯網
上載者:User

 

本開源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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.