本人電腦環境ubuntu18.04.4
1、ffmpeg源碼下載
http://ffmpeg.org/download.html#releases
本人下載的是最新版本4.2.2
2、對源碼進行解壓。
3、進入解壓後的文件目錄
4、創建文件android_build.sh,對該文件進行內容編寫,內容如下:
#!/bin/bash
#Android System API Level,你要運行在什麼系統上,就填寫系統API Level
#但是這個API Level必須要能夠在NDK中找得到,詳見下面的ANDROID_CROSS_PREFIX
API_LEVEL=21
#設置ndk目錄
NDK=/Users/zhaowenxiao/Library/Android/sdk/ndk/21.0.6113669
#llvm toolchain路徑。linux下是linux-x86_64,windows下則是windows開頭的。
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
#sysroot 這個一定要設置成 ndk的llvm 路徑下的 sysroot
#這裏有個坑要注意,sysroot文件夾在r19c後才存在,r18b中是沒有的!
SYSROOT=$TOOLCHAIN/sysroot
#ar nm 的prefix。這裏一定要保證和編譯的系統位數保持一致
# for aarch64
#PLATFORM=aarch64-linux-android
# for armv7
PLATFORM=arm-linux-androideabi
#ASM 路徑, 同上必須是llvm 目錄下的 asm
#說實話,我不知道爲啥要ASM。。
ASM=$SYSROOT/usr/include/$PLATFORM
#完整的 cross prefix
CROSS_PREFIX=$TOOLCHAIN/bin/$PLATFORM-
#專門給ndk clang/clang++ 的 cross prefix
# for aarch64
#ANDROID_CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android$API_LEVEL-
# for armv7
ANDROID_CROSS_PREFIX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API_LEVEL-
#臨時文件目錄
TMPDIR=../temp
#CPU架構
#64位arm:aarch64
#32位arm:armv7-a
#64位intel/amd:x86_64
#32位intel/amd:x86
ARCH=armv7-a
#操作系統
OS=android
#安裝位置
PREFIX=~/ffmpeg_out/android/$ARCH
#額外C參數
ADDI_CFLAGS=""
#這裏面不能寫註釋,否則會報錯
./configure \
--prefix=$PREFIX \
--enable-cross-compile \
--cross-prefix=$CROSS_PREFIX \
--target-os=$OS \
--arch=$ARCH \
--pkg-config=$(which pkg-config) \
--cc=${ANDROID_CROSS_PREFIX}clang \
--cxx=${ANDROID_CROSS_PREFIX}clang++ \
--disable-asm \
--disable-x86asm \
--disable-stripping \
--sysroot=$SYSROOT \
--fatal-warnings \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-ffplay \
--disable-ffprobe \
--enable-pic \
--enable-jni \
--enable-shared \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-decoder=mpeg4_mediacodec \
--enable-decoder=vp8_mediacodec \
--enable-decoder=vp9_mediacodec \
--enable-encoder=aac \
--enable-decoder=aac \
--enable-decoder=aac_latm \
--extra-cflags="-Os -fpic -I$ASM -isysroot $SYSROOT" \
--extra-ldflags="$ADDI_LDFLAGS"
make clean
make -j 4
make install
(1)、注意將ndk的路徑修改爲自己的電腦上的路徑;
(2)、根據自己電腦配置修改PLATFORM和ANDROID_CROSS_PREFIX以及ARCH三項。
5、運行該腳本
./android_build.sh
若不能執行,手動將該文件屬性修改爲可執行文件。
- 直接運行編譯出的是armv7-a架構的
- 如需要armv8(aarch64)的需要 修改PLATFORM和ANDROID_CROSS_PREFIX以及ARCH三項
6、編譯成功,運行結果如下: