原文:http://doandroid.info/?p=497
在續系列文章在32位的ubuntu
11.04中為android ndk r6編譯ffmpeg0.8.1版-android中使用ffmpeg媒體庫(一)和在android中通過jni方式使用編譯好的ffmpeg庫-android中使用ffmpeg媒體庫(二)文章後,本文将根據github中churnlabs的一個開源項目,來深入展開說明如何使用ffmpeg庫進行多媒體的開發。
本文中的代碼來自于https://github.com/churnlabs/android-ffmpeg-sample,更多的可以參考這個項目代碼。我會在代碼中加一些自己的注釋。感謝作者churnlabs給我們提供這麼好的例子以供我們學習。
在android的一些系統層應用開發大多數是采用jni的方式調用,另外對于一些比較吃cpu或者處理邏輯比較複雜的程式,也可以考慮使用jni方式來封裝。可以提高程式的執行效率。
本文涉及到以下幾個方面:
1 将3gp檔案push到模拟機器的sdcard中
2 寫jni代碼,内部調用ffmpeg庫的方法,編譯jni庫
3 loadlibrary生成的庫,然後撰寫相應的java代碼
4 執行程式,并檢視最終運作結果。
最終程式的顯示效果如下:
1 使用eclipse的ddms工具,将vid.3pg push到sdcard中
2 撰寫相應的jni檔案
3 撰寫相應的android.mk檔案
這裡需要注意一下檔案的目錄情況,我截圖說明一下。
在android.mk中有意個local_c_includes :=$(local_path)/include指明了相應的ffmpeg的頭檔案路徑。故在代碼中包含
就可以。
4 調用ndk-build,生成libffmpegutils.so檔案,将這個檔案拷貝到/root/develop/android-ndk-r6/platforms/android-8/arch-arm/usr/lib目錄,使得我們在下面使用android avd2.2的時候,可以加載到這個so檔案。
5 撰寫相應的eclipse項目代碼,由于在native.c檔案中指明了項目的工程名詞以及類名詞還有函數名詞,故我們的項目為com.churnlabs.ffmpegsample下面的mainactivity.java檔案
6 編譯運作即可,最終效果圖
7 項目代碼下載下傳:
https://github.com/churnlabs/android-ffmpeg-sample/zipball/master
參考:
1 https://github.com/churnlabs/android-ffmpeg-sample
2 http://www.360doc.com/content/10/1216/17/474846_78726683.shtml
3 https://github.com/prajnashi