今天来记录一下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

FFMPEG 编译及后续使用的一点小问题
将生成的.pc文件放到$HOME/ffmpeg/lib/pkgconfig文件中然后编译就好。


但是目前这种编译出来的,在码代码的时候除了要包含ffmpeg本身的库之外还要包含编译的第三方库以及其依赖库,比如

x264,x265,mp3lame等,这个暂时不去追究。

下面要说的是如何找到库的依赖库

FFMPEG 编译及后续使用的一点小问题

比如这个当我们编译好ffmpeg后,通过命令行测试-----没问题,开开心心准备码代码时,发现这个问题,心情一下就不好了。这种问题的出现跟我们的编译方法有问题(毕竟官方只需要包含libavcodec,libavformat等基本库就好了)。好了,不扯了,说解决问题的方法:

1.我们从下面err提醒中可以看到未定义的引用------说明程序中缺少动态库连接。

2.从各个函数名中我们可以发现基本都是BZ2的库,那么我们试一下将BZ2添加到库依赖项中,编译,可以发现问题解决了,开心。

但是这种问题时怎么解决的,下面说一下,我们可以看到图中红线表示的时libavformat.a下出问题了,我们可以去找libavformat的编译信息看一下,去找一下libavformat.pc

FFMPEG 编译及后续使用的一点小问题

我们可以看到在libavformat.pc中的libs选项中所有的连接库,其中就包含有-lbz2。那么下次就可以不用去猜了。

相关文章: