繁体   English   中英

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

[英]Compiling FFMPEG x265 not found using pkg-config

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

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

没有 x265 的 FFMEPG 编译没有问题,独立编译 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 库?

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/

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

ERROR: x265 not found using pkg-config

在我尝试这个之后:

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

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

它需要更多的图书馆。 请安装“libnuma”。

我遵循wiki x265 的指导

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

并且在 Red Hat Enterprise Linux 8 中运行良好

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


如果遇到此线程中描述的包配置错误,请先尝试安装默认(基于存储库)库,然后使用 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 构建版本如何的沮丧用户的参考,例如这里

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

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

你可以试试

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

我相信我找到了解决方案。 问题似乎是当前的指南是从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

我无法发表评论,因为我的声誉太低了。 不知道是干什么用的:(

无论如何,我遇到了同样的问题,我不得不在解决方案中做上面提到的两个技巧:

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

加上这两个开关,胜利就是你的了。

我还遇到过未生成 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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM