今天来记录一下Cent OS 7下编译FFMPEG的故事。
ffmpeg官方wiki:
centos 下ffmpeg编译第三方库
https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
ffmpeg编译N卡硬编:
https://trac.ffmpeg.org/wiki/HWAccelIntro
如果遇到这个问题,
ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcoded
将生成的.pc文件放到$HOME/ffmpeg/lib/pkgconfig文件中然后编译就好。
按照上述步骤编译出来的是FFMEPG的静态库版本,在配置环境的时候发现除了要包含ffmpeg本身的库之外还要包含编译的第三方库以及其依赖库,比如x264,x265,mp3lame等,重要的是通常会出现一下两个比较大的问题:
(一)FFMPEG 静态库链接顺序
FFMPEG 静态库的链接顺序其实在configure文件中已经告诉我们了,仔细查看会找到以下,所以我们在使用的时候按照这个顺序来添加库就好了
(二)FFMPEG静态库的依赖库
当我们编译好ffmpeg后,通过命令行测试-----没问题,开开心心准备码代码时,发现在libavxx.a有xx函数未定义的引用时,心情一下就不好了。说解决问题的方法:
1.我们从下面err提醒中可以看到未定义的引用------说明程序中缺少动态库连接。
2.从各个函数名中我们可以发现基本都是BZ2的库,那么我们试一下将BZ2添加到库依赖项中,编译,可以发现问题解决了,开心。
但是这种问题应该怎么解决,下面说一下,我们可以看到图中红线表示的时libavformat.a下出问题了,我们可以去找libavformat的编译信息看一下,去找一下libavformat.pc
我们可以看到在libavformat.pc中的libs选项中所有的连接库,其中就包含有-lbz2。那么下次就可以不用去猜了。