簡體   English   中英

X264:如何編譯支持 swscale 的 x264?

[英]X264: How to compile x264 with swscale support?

客觀的

我正在嘗試構建:

  • 具有 swscale 支持的 x264 靜態庫 (.lib)。 我想在 Visual Studio 項目中使用這個庫,其中 24 位 RGB 位圖圖像是:

    1. 從 RGB 轉換為 YUV2
    2. 轉換后的圖像被發送到 x264 編碼器
    3. 編碼器的輸出通過 UDP 流傳輸到遠程 IP 端點。
  • 具有 swscale 支持的 x264 可執行文件 (.exe)。 我想將可執行文件用於與上述相同的目的。 在另一個 Visual Studio 項目中,我將啟動 x264.exe 作為一個單獨的進程,並通過其 stdin 將位圖數據通過管道傳輸到 x264 進程,並從進程的 stdout 中讀出編碼數據。

問題

我在弄清楚如何使用 swscale 支持進行編譯時遇到了一些麻煩。 我需要對可執行文件和庫的 swscale 支持。

地位

到目前為止,我已經從 x264 網站下載了最新的 x264 源代碼。

我已經在我的機器上安裝了 MINGW,當我運行 'configure' 和 'make' 時,我得到了 x264 靜態庫 - 但沒有swscale 支持。

我無法找到有關如何在 x264 庫中包含 swscale 的詳細分步指南。 我最接近描述的是這個討論:

http://forum.doom9.org/showthread.php?t=165350

所以我從以下位置下載了 libpack:

http://komisar.gin.by/mingw/index.html

並將其解壓縮到我的硬盤:

然后我在我的 x264 目錄中執行了 'make' 和 'configure'(再次):

./configure --extra-cflags="-I/m/somePath/libpack/libpack/libpack/include" --extra-ldflags="-L/m/somePath/libpack/libpack/libpack/lib"

我在 lib 和包含目錄中有以下內容:

lib目錄

包含目錄

當我執行上述“配置”時,我得到:

platform:      X86
system:        WINDOWS
cli:           yes
libx264:       internal
shared:        no
static:        no
asm:           yes
interlaced:    yes
avs:           avisynth
lavf:          no
ffms:          no
mp4:           lsmash
gpl:           yes
thread:        win32
opencl:        yes
filters:       crop select_every
debug:         no
gprof:         no
strip:         no
PIC:           no
bit depth:     8
chroma format: all

You can run 'make' or 'make fprofiled' now.
bash.exe"-3.1$

當我執行'make'時,我最終遇到了這個錯誤:

gcc.exe: error: unrecognized command line option '-fomit-frame-poin'
gcc.exe: fatal error: no input files
compilation terminated.
make: *** [.depend] Error 1
bash.exe"-3.1$

問題我做錯了什么?

我要指出的幾件事:

  • MinGW 有時會導致編譯問題(因為基於 Windows 的兼容性要求 - 我並不是說 MinGW 不好)。 我盡可能在本機 UNIX 系統上進行編譯。
  • ffmpeg 內置了對 swscale 的支持。 如果您找不到解決問題的方法,您可能需要考慮使用支持 x264 的 ffmpeg。 如何在此處編譯或使用靜態構建
  • ffmpeg libswscale 源可以在這里獲得。 您可能想要下載它並使用指向它的配置編譯 x264。
  • 您可以隨時查看 ./configure --help 以獲取更多信息

1) 您不能構建“支持 swscale 的 x264 靜態庫 (.lib)”,因為它們是獨立的庫,應該在項目中一起使用,而不是通過在另一個庫中構建。 此外,除非您使用 ICL 構建,否則您無法構建 MSVS 可用的 libx264 靜態庫,因為嘗試將 MinGW 構建庫 (.a) 混合到 MSVS 項目中會遇到很多問題。 如果您想在 MSVS 項目中使用 libx264,我將推薦使用共享庫 (.dll)。 您可以找到如何使用 Google 為 libx264.dll 構建 .lib。

2) 要構建具有 swscale 支持的 x264 可執行文件,您需要為 x264 的配置提供 swscale 庫和頭文件的路徑,這些文件是 ffmpeg/libav 項目的一部分,並使用它們進行構建。

至於使用 komisar 的 libpack 構建時的問題。 您的配置命令行看起來正確,但它仍然沒有使用 swscale 進行配置(配置輸出中缺少調整大小過濾器)。 要找出原因,您需要查看由 configure 創建的 config.log 文件,但很可能 swscale 在您使用的 libpack 中已過時(並且沒有 x264 使用的某些 API 值)。

至於gcc.exe: error: unrecognized command line option '-fomit-frame-poin'我不知道你從哪里得到這個錯誤選項,因為它應該是-fomit-frame-pointer但你沒有發布完整的命令行gcc 導致錯誤。 可能是您自己以某種方式指定了它(環境 CFLAGS),或者它是命令行的一些截斷(命令行太長)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM