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、编译成功,运行结果如下:

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