win下使用mingw64編譯支持x264、x265、fdk-acc的FFMpeg


FFMpeg編譯依賴庫安裝

nasm部分

x264、x265、ffmpeg這些工具使用nasm編譯會比較快,使用起來也會比較快。所以先安裝nasm[Tip1]

pacman -S mingw-w64-x86_64-nasm

cmake部分

其中fdk-aac、x265部分需用cmake工具編譯,所以先下載該工具[Tip2]

下載鏈接:https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2.zip

解壓縮后在mingw64.exe的DOS窗口,添加cmake的bin執行目錄到環境變量中,這樣我們就可以使用cmake命令啦!

pkg-config部分

FFMpeg的編譯依賴許多頭文件和庫文件,我們總不能編譯完一個庫文件,就整理該庫所需頭文件供后期編譯FFMpeg使用,這樣太麻煩。FFMpeg的編譯全部使用了pkg-config工具,它會自動給出鏈接庫文件所需的頭文件和庫文件路徑。

pacman -S pkg-config  #這里安裝msys下的pkg-config,因為mingw64下的該工具無法正常讀取'.pc'文件的路徑 ln -s /usr/local/bin/pkg-config /mingw64/bin/pkg-config  #軟鏈接到mingw64執行目錄下,方便執行

打開msys2.exe -》

執行“echo $PKG_CONFIG_PATH” -》

將結果復制粘貼給mingw64.exe下的PKG_CONFIG_PATH。

這樣可以在mingw64下使用'pkg-config'命令獲取到msys2環境中的'.pc'文件。

fdk-aac部分

下載鏈接:https://downloads.sourceforge.net/opencore-amr/fdk-aac-2.0.1.tar.gz

 

./configuremake && make install

x264部分

下載鏈接:https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2

./configure --enable-static make && make install

x265部分

下載鏈接:https://bitbucket.org/multicoreware/x265/downloads/[Tip3]

cd x265/build/msys/
sh make-Makefiles.sh

會出現下圖配置選項:

無需作修改,點擊configure,再點擊generate即可。然后關閉圖形界面,回到DOS窗口,執行'make && make install'命令。

drawtext參數使用所需要的安裝

如果編譯出來的FFMpeg不需要使用該參數,可不執行該步驟。

安裝步驟參考:https://blog.csdn.net/u014552102/article/details/104442111

 

執行FFMpeg的configure

上述是安裝步驟,最后說說配置configure文件時遇到的問題[Tip4]

configure參數

./configure --disable-ffplay --disable-ffprobe --disable-doc --disable-debug --disable-shared \ --enable-static --enable-thumb --enable-neon --enable-pic  --enable-gpl --enable-version3 --enable-nonfree \ --enable-libx264 --enable-libx265 --enable-libfdk_aac \ --enable-libfreetype --enable-libfontconfig --enable-libfribidi \ --enable-w32threads --host-os=win64 \ --pkg-config="/mingw64/lib/pkgconfig/" --pkg-config-flags="--static" --extra-cflags="-fPIC" --extra-cxxflags="-fPIC"

fribidi部分

如果不使用drawtext參數,可跳過該步驟。

用鏈接里的方法編譯的fribidi,最后會出現make install失敗,導致pc文件、庫目錄無法正常install至相應位置。所以需要手動cp -》

cp fribidi.pc /usr/local/
cp libfribidi-0.dll /mingw64/lib/
cp libfribidi-0.dll.def /mingw64/lib/

我就差這三個文件,其它如.la文件、.dll.a文件都在相應位置。

fdk-aac部分

有個測試文件這樣包含:#include <fdk-aac/aacenc_lib.h>。該文件本來在libAACenc目錄下,而不是fdk-aac,如果我們不修改該測試文件的內容,只能暫且在"/mingw64/include"目錄下創建該目錄 -》

mkdir /mingw64/include/fdk-aac  #fdk-aac的pc文件中頭文件路徑是/mingw64/include,所以在這里建目錄 cp someplace/libAACenc/aacenc_lib.h /mingw64/include/fdk-aac

aacenc_lib.h文件中有內嵌include頭文件,它們都在"libSYS/include"目錄下,所以修改"pkgconfig/fdk-aac.pc"文件,另外指定頭文件搜索目錄:

 

 

 x264部分

configure文件在鏈接某個測試文件時沒有指定“-L”,也沒有用到pkg-config里的頭/庫文件路徑,卻指定了“-lx264”,由於mingw64的DOS環境下庫的自動搜索路徑有點問題,所以在鏈接前需要指定x264頭/庫文件在哪里可以被找到 -》

cp /usr/local/include/x264* /mingw64/include/ #如果不修改configure文件,只好暫且把264頭文件路徑添加至mingw64下 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib  #之前x264被編譯成靜態庫

 

執行FFMpeg

至此可以編譯出win下ffmpeg可執行文件,但該版本依賴許多庫,將該程序單獨拿出來比較麻煩:

 

其中,libfontconfig-1.dll、zlib1.dll、libgcc_s_seh-1.dll、libintl-8.dll、libxml2-2.dll、libstdc++-6.dll、zlib1.dll、liblzma-5.dll必須是"/mingw64/bin/"目錄下的動態庫。

這樣就可以單獨使用ffmpeg:

 

 

 

Tips:

[Tip1]:ffmpeg較新版本:如4.2版本,如果在configure階段沒有指定--disable-asm、且匯編器為yasm,就會報錯。根據ffbuild/config.log錯誤日志顯示,是在測試yasm時語法錯誤,所以對於較新版本,我們使用nasm來編譯ffmpeg。

[Tip2]:在ming264、msys2環境中通過pacman下載的cmake工具在編譯x265時會遇到一些QT動態庫找不到的問題,所以從官網上下載。

[Tip3]:

 

 據上圖所示,x265需要通過mercurial版本控制工具的hg命令下載,在msys2中的pacman倉庫中有該軟件的下載方式。

 

這里就不去下載該工具了,直接下載x265的壓縮包。

[Tip4]:configure日志是ffbuild/config.log,可被用來分析配置時遇到的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM