FFMPEG系列-编译FFMPEG 3.4

最近对视频处理有了很大的兴趣,想着利用闲暇的时间把这个东西补一补,深知这是一个比较难啃的东西,但还是打算坚持下去,希望这一系列的笔记不要断吧,如果能够帮助到也想要学习的小伙伴的话,那就更好了。

一、下载

直接百度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)'

如图

change the configure info for android。-guaju

暂时不知道什么意思,编译完之后再深究

三、编写脚本文件 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

如图


创建config.sh执行文件。-guaju

四、我们再来创建第二个脚本文件build_android.sh

如图


build_android.sh执行文件。-guaju

里面的内容为:

#!/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

即可,如图


更改文件权限。-guaju

六、通过以上的五部操作,我们就准备好了,现在开始对ffmpeg进行编译

还是进入到ffmpeg目录中,然后执行./build_android.sh即可

但是我到这里遇到了问题,这里也一同贴出,如果有相同的小伙伴,可以参考下


编译报错1.-guaju

这是因为 FFMPEG为了提高编译速度,使用了汇编指令,如果系统中没有yasm指令的话,就会出现上述的问题。根据提示,我可以使用--disable-x86asm去执行一个阉割的编译

但是,毕竟我是一个追求完美的人,不想要阉割的。。。

so,我们可以执行

brew install yasm

这个命令安装这个yasm,但是这个时候,会自动检测homebrew是否版本过低,如果版本合适,就会直接更新或者安装yasm,如果版本低,那么会先升级homebrew,然后再更新或安装yasm.

ok,如果没有报上边的错误的话,正常来说就会开始编译你的ffmpeg了,由于我这个电脑是i7的,感觉速度还行,编译了5分钟左右。所以需要有点耐心~~~

如图

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容