【ffmpeg】编译及使用外部的编解码器

有时候,ffmpeg默认带的编解码器不能满足需要,尤其是编码器,往往需要额外补充。

下面以mp3的一个编码器为例,进行说明:
编译ffmpeg,想将libmp3lame编入其中,将视频中的音频导出,封装为mp3文件。

进行编译配置时,对执行configure时,加入了参数--enable-libmp3lame;
但是编译出来的ffmpeg,通过ffmpeg --encoders查找,就是没有mp3编码器。

进行了多次重新编译以及下载新代码进行编译,还是一样的问题。

后来发现,当执行ffmpeg时,出现如下警告:
WARNING: library configuration mismatch
并且各个库的configuration不是执行configure设置的值

想到发生现象的原因:
1、在配置configure时,将prefix设置为源代码的根目录下;
2、通过编译,将ffmep等可执行文件放入到了prefix指定的目录;而生成的动态库在prefix目录下的lib文件夹下;
3、直接运行prefix下的ffmpeg,找到依赖的动态库为机器指定的环境变量某个目录下的动态库(不是这次编译出来的);

总结:
当机器中存在多套ffmpeg的动态库是,FFmpeg的执行一定要明确依赖的动态库路径。
为了保险,将ffmpeg执行程序放入到想使用的动态库的路径下执行。

你可能感兴趣的:(视音频,音视频,ffmpeg)