FFmpeg 第三方库的引入——以opus为例
FFmpeg支持第三方的编解码库,本文记录了第三方库的引入方法,以opus为例。
步骤
- 首先查看当前已安装的ffmpeg是否支持 opus,如果已经支持,就啥都不用改啦。
ffmpeg -codecs | grep opus
- 如果当前ffmpeg不支持,查看 FFmpeg 源码是否支持 opus,如果支持的话,重新编译FFmpeg即可。进入 ffmpeg 源码目录,执行:
./configure --list-encoders | grep opus
- 如果本地的FFmpeg中不包含opus库,需要安装 opus 库:
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 了。