FFmpeg配置第三方库

FFmpeg支持很多音视频格式的编解码,其中一部分是通过第三方库支持的。这些第三方支持的编解码,默认是不开启的。比如视频的h264,音频的opus(ffmpeg有个原生的opus,但是编码只支持48K).

以opus为例,讲一下如何让ffmpeg支持第三方库。

  • 首先查看当前版本是否支持opus,如果现在就支持,那就啥都不用改啦。
ffmpeg -codecs | grep opus
  • 查看ffmpeg源码是否支持opus

进入ffmpeg源码目录,执行:

./configure --list-encoders | grep opus

企业微信截图_a54fa7df-5ac1-4204-ab47-6b06d8d1a22e.png

可以看到除了原生的opus外,还支持一个libopus。

  • 安装opus库

ffmpeg要使用第三方库,需要先安装第三方库,再配置ffmpeg,在生成ffmpeg库的时候依赖该库。
下载libopus源码,并执行./configure, make, make install 三步曲,libopus就安装成功了。

  • 配置ffmpeg库,开启libopus

在ffmpeg源码目录,执行./configure时,增加参数:--enable-libopus --enable-encoder=libopus
其中libopus就是./configure --list-encoders时看到的那个名字。
--enable-libopus 表明生成ffmpeg时,使用libopus库。
--enable-encoder 表明开启名字为'libopus'的编码器。

然后make,make install就能更新ffmpeg支持libopus了。

重新执行./configure --list-encoders | grep opus,得到下图:企业微信截图_af8a0ccf-ea8c-49e5-9a68-0e0b84c84569.png

可以看见encoders和decoders后面都增加了libopus。现在就可以用新的libopus进行非48K的编码了。

  • 如果ffmpeg库还要发给别人呢

如果确定ffmpeg的功能不需要改,把ffmpeg和第三方库的头文件,库文件从/usr/local/下找出来发过去就OK。

不过,万一哪天别人需要加个h264呢。别人高高兴兴的编了个带h264的版本替换进去(他不知道现在有opus啊,说不定还有别的什么这个那个库)。完蛋!不知道过了多久,终于有人发现音频功能出问题了。

所以./configure的参数也应该放到版本里。别人加h264的时候,就在这个参数上进行添加。

改完一编译,又完蛋。因为opus库安装在我们本地,还记得吗?别人电脑上没有呀。我们把opus库的include和lib放到版本库下,再在ffmpeg的./configure参数里,指定第三方库的目录。指定方法如下:

--extra-cflags=" -I 库路径/include "  --extra-cxxflags=" -I 库路径/include"
--extra-ldflags="-L 库路径/lib"

并指定ffmpeg的安装目录,指定方法如下:

--prefix=ffmpeg版本库里的安装目录

这样就能愉快的使用配置了第三方库的ffmpeg了。

注:mac系统可能还会遇到动态库签名和绝对路径的问题,目前没研究明白,这里就不说了。

你可能感兴趣的:(c++)