簡體   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