FFmpeg配置第三方库

3次阅读

共计 1295 个字符,预计需要花费 4 分钟才能阅读完成。

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

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

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

进入 ffmpeg 源码目录,执行:

./configure --list-encoders | grep opus

可以看到除了原生的 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,得到下图:

可以看见 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 系统可能还会遇到动态库签名和绝对路径的问题,目前没研究明白,这里就不说了。

正文完
 0