使用NDK编译ffmpeg

来源:互联网 发布:mac怎么下载ed2k 编辑:程序博客网 时间:2024/05/16 16:09

测试编译平台为linux,首先去ffmpeg官网下载linux版本ffmpeg并解压缩,本人编译版本为2.6.9。需要下载linux版本ndk并解压缩,版本为r10e。
修改修改下载目录中的configure文件

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

替换为

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'SLIB_INSTALL_LINKS='$(SLIBNAME)'

下面附上我改好的configure文件,直接覆盖原文件即可:点击下载
编写shell脚本直接生成类库

#!/bin/bashmake cleanexport NDK=/usr/ndk/android-ndk-r10eexport SYSROOT=$NDK/platforms/android-9/arch-arm/export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64export CPU=armexport PREFIX=$(pwd)/android/$CPUexport ADDI_CFLAGS="-marm"./configure --target-os=linux \--prefix=$PREFIX --arch=arm \--disable-doc \--enable-shared \--disable-static \--disable-yasm \--disable-symver \--enable-gpl \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--disable-doc \--disable-symver \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $ADDI_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake install

下面附上我写好的shell脚本文件点击下载
注意:shell脚本的名字为sh
编译生成

把shell脚本放入ffmpeg目录里面,也就是和configure文件在同一个目录,直接运行脚本就会生成我们需要的库文件,运行命令 ./脚本名称。

注意:我们的ffmpeg的文件可能没有权限运行,使用 chmod 777 -R ffmpeg使ffmpeg文件加下的所有文件获得最高权限

编译成功后会出现一个android文件夹,包含的是arm平台的动态库,我们只需要取出ffmpeg八大模块对应大版本库就行了
这里写图片描述
你会发现android目录下还有一个include文件夹,那是我们生成的头文件。

易错点

有时候我们传入shell脚本并不能运行,可能我们的文件格式不对,需要使用dos2unix把格式转换(linux下)。
shell脚本的NDK变量代表我们下载NDK并解压后的目录