原文:http://doandroid.info/?p=471
在繼上篇在32位的ubuntu
11.04中為android ndk r6編譯ffmpeg最新版0.8.1後,本人來給大家展示一下如何在android中使用編譯好的ffmpeg庫。
整體調用邏輯為:
1 編譯完ffmpeg庫
2 使用jni方式撰寫c代碼,其中需要包含相應的ffmpeg的頭檔案
3 撰寫相應的android.mk檔案,裡面指定需要編譯的c代碼以及需要連結的動态庫
4 執行ndk-build生成相應的jni庫
5 建立andorid java程式,代碼中loadlibrary相應ffmpeg庫以及剛才生成的jni庫
6 靜态方法聲明native函數,這些函數在jni寫的c語言中都已經實作過
下面為步驟:
1 将在32位的ubuntu
11.04中為android ndk r6編譯ffmpeg最新版0.8.1文中編譯得到的libffmpeg.so檔案拷貝到/root/develop/android-ndk-r6/platforms/android-8/arch-arm/usr/lib目錄,如果使用的是android2.3的話,還需有拷貝到/root/develop/android-ndk-r6/platforms/android-9/arch-arm/usr/lib目錄。
2 進入android ndk r6的samples目錄,我們基于最簡單的hello-jni來修改。由于我們在調用ffmpeg庫方法時候,需要使用到他的頭檔案。這裡我們将之前編譯libffmpeg.so檔案的所有代碼拷貝到/root/develop/android-ndk-r6/samples/目錄,并改目錄名稱為ffmpeg
3 修改hello-jni.c檔案
4 修改android.mk檔案
注意local_ldlibs := -lffmpeg是編譯添加動态連結庫檔案。
5 進入指令行,在目前目錄執行ndk-build
6 這時候會在/root/develop/android-ndk-r6/samples/hello-jni/libs/armeabi目錄生成一個libhello-jni.so的動态連結庫
7 為了後面的java程式能夠loadlibrary,需要将之前生成的libffmpeg.so檔案也拷貝到這個目錄
8 修改hellojni.java檔案
執行後将看到如下圖檔:
本文源代碼下載下傳:
hello-jni
對應的編譯完的libffmpeg.so檔案下載下傳
libffmpeg.so
ffmpeg檔案夾比較大,這裡不發了。可以從上篇文章找到。
對tq09931兄的文章表示感謝。
http://tq09931.iteye.com/blog/1011895
http://code.google.com/p/aacplayer-android/
http://www.roman10.net/?p=394
https://github.com/halfninja/android-ffmpeg-x264
https://github.com/mconf/ffmpeg
https://github.com/havlenapetr/ffmpeg
主參考
https://github.com/churnlabs/android-ffmpeg-sample