ffmpeg for android shared library

ffmpeg for android shared library

This comes from my github READMElinux

移植ffmpeg到android,編譯可用於jni調用的so庫.

編譯出的so在android apk中的使用參考個人另外一個項目ffmpeg-jni-sampleandroid

環境

ubuntu ubuntu15.10_64

ffmpeg 2.6.2
git

獲取代碼

git clone https://github.com/tainzhi/ffmpeg-for-android-shared-library

使用

Step 1

安裝android linux SDK以及NDK,並配置環境變量;github

個人是經過Android SDK manager下載, 默認安裝在~/Android/Sdk/ndk-build
ubuntu

ffmpeg官網下載ffmpeg源碼包;也能夠直接使用我本項目中的ffmpeg源碼,我所使用的是2.6.2版本

若是要使用本身下載的ffmpeg源碼,須要先將source/ffmpeg下的全部內容刪除,而後將本身所下載的源碼包解壓到ffmpeg目錄下
多線程

Step 2

本項目提供了分別編譯arm平臺庫和x86庫和arm64平臺的sh文件,分別爲ide

  • source/build_android_arm.sh工具

  • source/build_android_x86.shui

  • source/build_android_aarch64.shidea

下面以build_android_arm.sh爲例進行說明:

source/build_android_arm.sh複製到ffmpeg目錄下

1.指定臨時目錄
export TMPDIR=/tmp

指定一個臨時目錄,能夠是任何路徑,但必須保證存在,ffmpeg編譯要用;

2.指定NDK路徑
NDK=~/Android/Sdk/ndk-build
3.指定使用NDK Platform版本
SYSROOT=$NDK/platforms/android-21/arch-arm/

這裏指定的ndk platform的路徑,必定要選擇比你的目標機器使用的版本低的,好比你的手機是android-21版本,那麼就選擇低於21的

4.指定編譯工具鏈
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
5.指定編譯後的安裝目錄
CPU=arm
PREFIX=$(pwd)/android/$CPU

顯然,生成的文件在source/ffmpeg/android/arm/目錄下

這個目錄是ffmpeg編譯後的so的輸出目錄,會有一個include和lib文件夾生成在這裏,這也是咱們以後要在android apk中使用的.

  • source/ffmpeg/android/arm/lib/目錄下是動態庫文件.so

  • source/ffmpeg/android/arm/include/目錄下的是頭文件,不只須要動態庫,還須要頭文件

build_android_arm.sh參數配置

--enable-shared--disable-static生成動態庫

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-是一些跨平臺變異所須要的文件,不一樣的平臺是不同的

--target-os=android指定適配android平臺,我以前fork的原庫是linux,若是是linux,那麼生成的庫名中有版本號,還須要重命名指定android後就不須要了

make -j8多線程加速編譯

具體查看ffmpeg文檔.

Step 3

cp source/build_android_arm.sh source/ffmpeg/
cd source/ffmpeg
./build_andrioid_arm.sh

Step 4編譯出現錯誤

若是編譯過程當中出現錯誤,錯誤信息會輸出在source/ffmpeg/config.log文件中,通常在文件末尾.仔細分析該文件,能夠找到編譯出錯的緣由

Step 5

等待編譯完成後,在source/android/arm/目錄下分別有動態庫lib和頭文件include.

Step6 從新configure&&compile

修改了build_android_arm.sh文件,發現參數沒有起做用,原來沒有清除以前configure生成的文件.這個命令,值得擁有

make distclean      #delete files created by configure
#then
. ./build_android_arm.sh

Reference & Thanks

相關文章
相關標籤/搜索