背景:
最近想把FFmpeg移植到Android SDK上,以便在設備上調試或者自己寫寫小代碼,基於的版本是Android 4.4。
1、下載FFmpeg源碼
這一步沒什麼好說的,貼上官網路徑http://ffmpeg.org/download.html,從這裏可以下載到最新的FFmpeg。
2、在Android平臺上編譯
將其移到Android源碼目錄下。FFmpeg的編譯分3步驟:
1)執行FFmpeg源碼下的./configure腳本,帶上需要的參數即可。
編譯選項還是很多的,可以參下該文章:
https://blog.csdn.net/momo0853/article/details/78043903#標準選項standard-options
2)make;make install 這樣就會將編譯的東西輸出到指定的目錄之下
爲了方便,謝了一個編譯腳本,主要是編譯一些靜態庫以供其他程序調用,我這裏主要是配置了以下幾個選項:
1)–sysroot=$SYSROOT
指定了交叉工具鏈的頭文件和庫位,例如Android 32位位置$ndk_dir/platforms/android-14/arch-arm,我使用的則是Android SDK下的ndk,如果是依賴自己下載ndk編譯也可以。
2)–cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-
設置編譯鏈的前綴,使用的是Android SDK的編譯器
3)–arch=$CPU
設置編譯的CPU架構,我們時arm
4)–prefix=$PREFIX
指定了編譯輸出路徑,待會會生成相應的庫和頭文件
附上腳本:
#!/bin/bash
echo "start configure,waiting...";
SYSROOT=$(pwd)/../prebuilts/ndk/current/platforms/android-14/arch-arm/
TOOLCHAIN=$(pwd)/../prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7
CPU=arm
PREFIX=$(pwd)/out/$CPU
./configure \
--prefix=$PREFIX \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-libs=-lgcc \
--disable-shared \
--enable-static \
--disable-doc \
--disable-ffserver \
--disable-ffmpeg \
--disable-ffprobe \
--disable-parsers \
--enable-parser=aac \
--disable-indevs \
--disable-bsfs \
--disable-devices \
--disable-muxers \
--disable-hwaccels \
--disable-encoders
sleep 1;
make;make install;
exit;