Ubuntu下编译ffmpeg(2)

背景:

(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.csdn.net/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}...

 

可以看到我们已经成功安装!

你可能感兴趣的:(Ubuntu下编译ffmpeg(2))