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

相关文章
相关标签/搜索