使用pkg-config编译FFMPEG时找不到x265。

12

我正在尝试在Win10上使用x265编译FFMPEG。 我正在使用xhmikosr最新的完整MinGW版本,该版本可以在以下位置找到:

http://xhmikosr.1f0.de/tools/msys/

在没有x265的情况下,FFMPEG编译没有问题,并且编译独立的x265也没有问题。 然而,当我在FFmpeg中使用--enable-libx265时,出现以下错误:

ERROR: x265 not found using pkg-config

并且这是来自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

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

$ echo $PKG_CONFIG_PATH
C:\MYSYS\local\x86_64-w64-mingw32\lib\pkgconfig

当我搜索库时,x265就在那里。

$ pkg-config --list-all
...
x265          x265 - H.265/HEVC video encoder
...

这里是调试日志:

$ 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'
...

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


你找到解决方法了吗?我也遇到了同样的问题。在构建过程中,pkg-config --list-all中出现了x265,但是却提示使用 pkg-config 未找到 x265 - Ian
没有,从来没有。我不再安装MinGW了。这一定与交叉编译器调用库的方式有关。我记得x265甚至会在混合编译时导致其他FFMPEG库的编译问题。但是我真的不太了解它。 - secondplace
在MinGW/msys2上遇到了同样的问题。将x265构建为共享库,并将libx265.lib重命名为x265.lib,似乎已经为我解决了这个问题(知道它实际上可以通过pkg-config看到)。 - num3ric
10个回答

5

根据我的经验,在CentOS中配置ffmpeg和x265时,也会出现错误消息:

ERROR: x265 not found using pkg-config

在我尝试了这个之后:

$ export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"

我成功地使用x265配置和编译了ffmpeg。你可以尝试一下。


我在Manjaro上遇到了这个问题,尝试配置启用x264的ffmpeg。虽然启用x265很容易,但我不明白为什么。不过我很高兴找到了解决方法,看起来已经奏效了,谢谢。 - Emile Vrijdags

5

经过多次试验,我相信我已经找到了Ubuntu 16.04下的解决方案和根本原因。这个解决方案可能也适用于其他变种的Ubuntu。


如果你遇到了这个帖子中描述的Package Config错误,请先安装默认(基于仓库的)库,然后再使用你的ffmpeg构建脚本安装自定义版本。在编译ffmpeg和依赖库(例如x265)之前,根据需要运行以下命令:
apt install -y libx265-dev

如果另一个库出现问题,尝试相同的技巧,然后再次运行脚本以查看是否有效。例如,有些人报告从源代码编译ffmpeg时会出现gnutls的问题。在Ubuntu 16.04中的解决方法是首先通过apt安装它,然后再运行您的脚本。
apt install -y gnutls-dev

如果你在编译x264库(用于H.264支持)时遇到问题,只需在运行脚本之前运行以下命令:

apt install -y libx264-dev

只要您的新脚本覆盖旧文件而不是清除它们,这种方法就可以使用。
背景/历史
问题的根源可以追溯到至少2017年,尽管有许多声称已经解决了该问题,但事实上并没有。人们可以在各种论坛和网站上找到参考资料,其中包括无法正确编译ffmpeg版本的沮丧用户,例如here
这是一个难以解决的问题,部分原因是VLC开发者安装x265库支持的说明已经失效。此外,解释此问题及其解决方法的信息存档现在已不再提供,这是由于BitBucket今年早些时候决定终止Mercurial支持。大多数关于解决此问题及其解决方法的存档论坛帖子都已经消失。在GitHub上仍然可以找到一些线索,但它们是有关该主题的不完整信息片段,没有提供完整的视角。
从头安装ffmpeg几乎会让任何人感到头痛。我在网上找到的所有脚本(数十个)都没有按照描述正常工作。它们大部分的问题都是链接不正确/过时。带有GitHub链接的解决方案似乎最为可靠。其他应该避免使用(例如 hg,如上所述不再受支持)。

4

是的,这在我的情况下也解决了问题。当我将ffmpeg从3.4.1更新到4.3.1时出现了问题。这里是解决方案:https://github.com/ilyaevseev/ffmpeg-build/issues/2 - StNickolay
当我为我的ffmpeg构建添加x265支持时,这对我很有帮助。我继续添加了-lm,因为它现在是ffmpeg编译文档的一部分 --extra-libs="-lpthread -lm" 参考:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu - jcaruso

3

x265.pc 有时不在 "/usr/local/lib/pkgconfig" 中,而是在 "/usr/lib/arm-linux-gnueabihf/pkgconfig/" 中,因此需要将其包含在导出中。

export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig/:/usr/local/lib/pkgconfig/

在你发布回答的近一年后,我找到了它,在尝试修复一些与该线程无关的类似问题时,你的答案解决了我的问题,非常感谢! - Paul J
非常感谢。这个答案帮助我解决了问题。 在我的情况下(安装ffmpeg与x265),所有其他软件包配置都在“$HOME/ffmpeg_build/lib/pkgconfig”中,但是x265在“/usr/local/lib/pkgconfig/”中,因此我不得不稍微更改导出的内容,如:PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig:/usr/local/lib/pkgconfig" - Waqas

2

I follow to guide from wiki x265

git clone https://bitbucket.org/multicoreware/x265_git
cd x265_git/build/linux
./make-Makefiles.bash
make

And works fine in Red Hat Enterprise Linux 8


这个仓库不再可用。但是当我在终端中访问它时,它们要求我输入用户名和密码。 - Patrissol Kenfack
2
请使用git clone https://bitbucket.org/multicoreware/x265_git x265命令进行克隆。 - CodeManX

1

我也遇到了一个情况,即x265.pc没有生成。我知道这不是原始问题的原因,但还是值得一提。

如果您没有安装git,就会出现这种情况。在我的情况下,我是在企业网络上使用预获取的源构建容器。

该问题已记录在https://bitbucket.org/multicoreware/x265_git/issues/572/pc-file-is-not-generated

可以通过安装git或使用以下简单方法来解决这个问题:

touch git
chmod a+x git
export PATH="$PWD:PATH"

哇!实际上,由于缺少git,我确实丢失了pc文件。 - Jovan Perovic
哇!实际上是因为缺少git而导致我缺少了pc文件。 - undefined

1
你可以尝试使用

--pkg-config="pkg-config --static"


1
需要更多的库,安装"libnuma"。

1

我因声望值太低而无法评论。我不知道它是用来做什么的 :(

无论如何,我遇到了同样的问题,我必须在解决方案中使用上述“两个”技巧中的两个:

--extra-libs="-lpthread"  
--pkg-config-flags="--static"  

加上这两个开关,胜利就属于你了。


这是一个很好的答案。我是这样做的:PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" ./configure --enable-gpl --enable-libx264 --enable-libx265 --extra-libs="-lpthread" --pkg-config-flags="--static" - Gardinal

0

我相信我找到了解决方案。问题似乎是当前指南正在从master中获取(这可能是开发人员想要的),但在我的情况下,我实际上需要stable。而不是使用当前指南中提供的命令:

sudo apt-get install libnuma-dev && \
cd ~/ffmpeg_sources && \
git -C x265_git pull 2> /dev/null || git clone --depth 1 https://bitbucket.org/multicoreware/x265_git && \
cd x265_git/build/linux && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
PATH="$HOME/bin:$PATH" make && \
make install

使用以下命令:
sudo apt-get install libnuma-dev && \
cd ~/ffmpeg_sources && \
git -C x265_git pull 2> /dev/null || git clone --depth 1 https://bitbucket.org/multicoreware/x265_git -b stable && \
cd x265_git/build/linux && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
PATH="$HOME/bin:$PATH" make && \
make install

尝试过了,但仍然不起作用。在这里提出了一个问题:https://bitbucket.org/multicoreware/x265_git/issues/edit/7 - slhck
这可能是因为“stable”现在已经损坏了 :) @slhck。用早期标签的下载或克隆替换git事物。我使用了: wget http://ftp.videolan.org/pub/videolan/x265/x265_3.2.1.tar.gz && tar zxf x265_3.2.1.tar.gz && cd x265_3.2.1/build/linux - Artemm
看起来解决方案是不仅要进行浅克隆,还要获取Git标签:https://bitbucket.org/multicoreware/x265_git/issues/572/pc-file-is-not-generated - slhck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接