使用 pkg-config 未找到编译 FFMPEG x265

sec*_*ace 7 ffmpeg mingw pkg-config libx265

我正在尝试在 Win10 上使用 x265 编译 FFMPEG。我正在使用来自 xhmikosr 的最新完整 MinGW 构建:

http://xhmikosr.1f0.de/tools/msys/
Run Code Online (Sandbox Code Playgroud)

没有 x265 的 FFMEPG 编译没有问题,编译 x265 独立工作也没有问题。但是,当我在 ffmpeg 中 --enable-libx265 时出现以下错误:

ERROR: x265 not found using pkg-config
Run Code Online (Sandbox Code Playgroud)

这来自 config.log:

require_pkg_config libx265 x265 x265.h x265_api_get
check_pkg_config libx265 x265 x265.h x265_api_get
test_pkg_config libx265 x265 x265.h x265_api_get
false --exists --print-errors x265
ERROR: x265 not found using pkg-config
Run Code Online (Sandbox Code Playgroud)

我的配置路径似乎都设置正确。

$ echo $PKG_CONFIG_PATH
C:\MYSYS\local\x86_64-w64-mingw32\lib\pkgconfig
Run Code Online (Sandbox Code Playgroud)

当我寻找库 x265 时:

$ pkg-config --list-all
...
x265          x265 - H.265/HEVC video encoder
...
Run Code Online (Sandbox Code Playgroud)

和这里的调试日志:

$ pkg-config --debug
...
File 'x265.pc' appears to be a .pc file
Will find package 'x265' in file 'C:/MYSYS/local/x86_64-w64-mingw32/lib/pkgconfig\x265.pc'
...
Run Code Online (Sandbox Code Playgroud)

为什么在我尝试编译时 pkg-config 仍然找不到 x265 库?

ior*_*304 5

根据我的经验,我在 CentOS 中使用 x265 配置 ffmpeg,它也收到错误消息:

ERROR: x265 not found using pkg-config
Run Code Online (Sandbox Code Playgroud)

我尝试这个之后:

$ export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
Run Code Online (Sandbox Code Playgroud)

我使用 x265 成功配置并编译了 ffmpeg。你可以试试这个。


MrP*_*ead 5

经过多次尝试和错误,我相信我已经在 Ubuntu 16.04 下找到了解决方案和根本原因。此解决方案也适用于 Ubuntu 的其他变体。


如果您遇到此线程中描述的包配置错误,请尝试首先安装默认(基于存储库)库,然后使用 ffmpeg 构建脚本安装自定义版本。

在运行自定义脚本之前根据需要运行这些命令,以从源代码编译 ffmpeg 和依赖库(例如 x265):

apt install -y libx265-dev
Run Code Online (Sandbox Code Playgroud)

如果另一个库失败,请尝试相同的技术,然后再次运行您的脚本以查看它是否有效。例如,有些人报告从源代码编译 ffmpeg 时抱怨 gnutls。Ubuntu 16.04 的解决方案是首先通过 apt 安装它,然后运行脚本。

apt install -y gnutls-dev
Run Code Online (Sandbox Code Playgroud)

如果您在编译 x264 库(用于 H.264 支持)时遇到困难,只需在运行脚本之前运行此命令:

apt install -y libx264-dev
Run Code Online (Sandbox Code Playgroud)

只要您的新脚本覆盖旧文件并且不清除它们,此方法就可以工作。

背景/历史

该问题的根源至少可以追溯到 2017 年,尽管有很多说法,但它似乎并未真正得到解决。人们可以在各种论坛和网站中找到有关无论 ffmpeg 构建版本如何都无法使编译正常工作的沮丧用户的参考资料,例如此处

这是一个很难解决的问题,部分原因是安装 x265 库支持的 VLC 开发人员说明已损坏。此外,由于BitBucket在今年早些时候决定取消 Mercurial 支持,解释此问题以及如何解决该问题的信息档案已不再可用。大多数解释该问题以及如何解决该问题的存档论坛帖子都消失了。在 GitHub 上仍然可以找到一些线索,但它们只是有关该主题的不完整的信息片段;没有一个能提供完整的视角。

从头开始安装 ffmpeg 肯定会让几乎任何人感到头疼。我在网上找到的脚本(几十个)都没有按照描述正确工作。它们的大多数问题都是不正确/过时的链接。带有 GitHub 链接的解决方案似乎是最可靠的。其他的应该避免(例如hg,如上所述不再支持)。