ffmpeg for android shared library

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了ffmpeg for android shared library脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

ffmPEg for android shared library

This comes From my github README

移植ffmpeg到android,编译可用于jni调用的so库.

编译出的so在andROId apk中的使用参考我的另一个项目ffmpeg-jni-sample

环境

ubuntu Ubuntu15.10_64

ffmpeg 2.6.2

获取代码

gIT clone https://github.COM/tainzhi/ffmpeg-for-android-shared-library

使用

Step 1

安装android linux SDK以及NDK,并配置环境变量;

我的是通过Android SDK manager下载, 默认安装在~/Android/Sdk/ndk-build

ffmpeg官网下载ffmpeg码包;也可以直接使用我本项目中的ffmpeg源码,我所使用的是2.6.2版本

如果要使用自己下载的ffmpeg源码,需要先将source/ffmpeg下的所有内容删除,然后将自己所下载的源码包解压到ffmpeg目录下

Step 2

本项目提供了分别编译arm平台库和x86库和arm64平台的sh文件,分别为

  • source/build_android_arm.sh

  • source/build_android_x86.sh

  • source/build_android_aArch64.sh

下面以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

脚本宝典总结

以上是脚本宝典为你收集整理的ffmpeg for android shared library全部内容,希望文章能够帮你解决ffmpeg for android shared library所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。