android 對ffmpeg源碼編譯

本人電腦環境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、編譯成功,運行結果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章