背景:
(Ubuntu系统)上次已经编译了ffmpeg,但是我发现我上次编译的ffmpeg在configure的时候没有配置x265 以及 x264这导致我在运行代码的时候没有办法打开h265的编码器(总是返回null),因此要重新配置一次,其实是可以直接在原有的基础上进行更改的,但是当时不清楚的情况下直接删掉了,因此这里直接重新来一遍,同时记录一些在编译过程中遇到的问题与解决方法。
过程:
0.准备工作:
(1)下载并编译x265,地址:https://bitbucket.org/multicoreware/x265/wiki/Home
这个网页有关于编译x265的命令以及解释。
(2)下载ffmpeg的源码:http://ffmpeg.org/download.html#build-linux
(3)删除原有的ffmpeg(这个很重要,一开始由于我没有删除原有的配置,总是失败)
1.配置操作:
我们在下载的ffmpeg目录中打开命令行,然后输入:
./configure --prefix=test --enable-shared --disable-static --disable-doc --enable-gpl --enable-libx264 --enable-libx265
然后你会发现返回:
ERROR: x265 not found using pkg-config
已经安装了x265但是没有找到,我们查看一下具体错误,打开ffmpeg的编译日志(大概所有编译安装都会有一个这样的文件,它会记录编译信息)
先查找一下在哪里,使用这个命令:
locate config
你会发现有一个文件叫config.log,然后打开它,直接拉到最底下,就能看到具体的错误信息(或许是因为日志是按顺序写的,所以失败的地方应该在文件的最底部)
我们会看到这样一段话:
pkg-config --exists --print-errors x265
Package x265 was not found in the pkg-config search path.
Perhaps you should add the directory containing `x265.pc'
to the PKG_CONFIG_PATH environment variable
No package 'x265' found
ERROR: x265 not found using pkg-config
大概就是说在pkg-config的搜索路径中没有发现x265这个包,它建议把x265.pc所在目录加到PKG_CONFIG_PATH这个路径中。
使用下面的命令添加路径:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH
这个弄完之后再编译一次我们会发现编译成功。
2.测试工作
在命令行输入ffmpeg,发现提示 error while loading shared libraries: xxxxx.so.x: cannot open shared object file: No such file or directory
有两种原因:
(1)你没有下载共享库
(2)下载了共享库,但是系统按照默认共享库路径找不到该共享库文件.
解决方法:
Case 1 如果共享库在目录/usr/lib 或 /lib 中
这种情况下我们只用执行ldconfig命令,这个命令主要是在默认搜索路径(usr/lib 与 /lib)和 动态库配置文件/etc/ld.so.conf 中的路径搜索出有效的动态库链接。所以只用在命令行中输入ldconfig即可
Case 2 如果在/usr/local/lib中(很多软件的共享库编译默认会安装到这个路径中)
那么我们需要修改动态库配置文件中的内容,也就是在这个文件中加上文件路径/usr/local/lib
具体操作:
sudo vi /etc/ld.so.conf (这个命令结束后我们会进入ld.so.conf文件中)
/usr/local/lib
:wq (保存并退出)
ldconfig (更新动态库链接)
除了上述方法之外还有设置全局变量的方法
可以参考blog:https://blog.youkuaiyun.com/bi_hu_man_wu/article/details/61664220
现在我们重新在命令行中输入ffmpeg,得到如下信息:
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)
configuration: --enable-shared --disable-static --disable-doc --enable-gpl --enable-libx264 --enable-libx265
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
可以看到我们已经成功安装!