最近对视频处理有了很大的兴趣,想着利用闲暇的时间把这个东西补一补,深知这是一个比较难啃的东西,但还是打算坚持下去,希望这一系列的笔记不要断吧,如果能够帮助到也想要学习的小伙伴的话,那就更好了。
一、下载
直接百度ffmpeg 进入到他的官网,直接下载就行了,不大,不到10m,但是功能却异常强大,膜拜。。。
二、修改配置文件
因为是自学,所以通过度娘找到了其他的贴子,都说如果想要支持android,那么最开始的时候就要修改配置文件
解压第一步下载的文件,然后打开ffmpeg,通过记事本等工具打开configure文件,
搜索SLIBNAME_WITH_VERSION字段,定位,然后做如下修改
把
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
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_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
如图
暂时不知道什么意思,编译完之后再深究
三、编写脚本文件 config.sh
还是在ffmpeg文件夹中,新建config.sh文件,然后里面添加如下内容
#ndk 环境
NDK=/Users/maimingliang/Documents/NDK/android-ndk-r12b
SYSROOT=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
# cpu 架构平台,若要编译 x86 则指定 x86
CPU=armv7-a
如图
四、我们再来创建第二个脚本文件build_android.sh
如图
里面的内容为:
#!/bin/sh
#引入配置文件
. config.sh
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
function build_android
{
./configure \
#编译输出前缀
--prefix=$PREFIX \
#启动生成动态库
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_android
五、给刚才创建的两个文件更改权限,这里我建议调成任何人都可用的权限即777
操作如下:
先进入ffmpeg目录,然后执行
chmod 777 build_android.sh config.sh
即可,如图
六、通过以上的五部操作,我们就准备好了,现在开始对ffmpeg进行编译
还是进入到ffmpeg目录中,然后执行./build_android.sh即可
但是我到这里遇到了问题,这里也一同贴出,如果有相同的小伙伴,可以参考下
这是因为 FFMPEG为了提高编译速度,使用了汇编指令,如果系统中没有yasm指令的话,就会出现上述的问题。根据提示,我可以使用--disable-x86asm去执行一个阉割的编译
但是,毕竟我是一个追求完美的人,不想要阉割的。。。
so,我们可以执行
brew install yasm
这个命令安装这个yasm,但是这个时候,会自动检测homebrew是否版本过低,如果版本合适,就会直接更新或者安装yasm,如果版本低,那么会先升级homebrew,然后再更新或安装yasm.
ok,如果没有报上边的错误的话,正常来说就会开始编译你的ffmpeg了,由于我这个电脑是i7的,感觉速度还行,编译了5分钟左右。所以需要有点耐心~~~
如图