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系统可能还会遇到动态库签名和绝对路径的问题,目前没研究明白,这里就不说了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。