Win7系統編譯支持x264的64位ffmpeg

    參考了衆位博友的文章,幾番折騰後,終於在WIN7系統下編譯出了支持x264的64位ffmpeg。現將編譯過程記錄一下,作爲備忘。

一,環境準備

1,下載篇

1.1 ffmpeg,地址 http://ffmpeg.org/download.html,獲取ffmpeg-4.2.1.tar.bz2

1.2 x264,地址 http://download.videolan.org/pub/videolan/x264/snapshots/,獲取last_stable_x264.tar.bz2

1.3 mingw64,地址 http://mingw-w64.sourceforge.net/ 或 http://mingw-w64.org/doku.php/download,獲取mingw-w64-install.exe

1.4 msys,地址 http://www.mingw.org/wiki/MSYS/ ,獲取 MSYS-1.0.11.exe

1.5 pexports,地址 https://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/,獲取pexports-0.47-mingw32-bin.tar.xz

1.6 yasm,地址  http://yasm.tortall.net/Download.html,獲取yasm-1.3.0-win64.exe

1.7 pkg-config,地址 http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/,獲取pkg-config_0.23-3_win32.zip

1.8 glib,地址 http://ftp.acc.umu.se/pub/gnome/binaries/win32/glib/,獲取glib_2.18.4-1_win32.zip

 

如果您不想一個一個下載,也可以到這裏下載工具集ffmpeg64位編譯工具集,把上邊需要的工具放到一塊了。

 

2,安裝篇

2.1 安裝mingw64

安裝路徑 C:\mingw-w64

2.2 安裝msys

安裝在mingw64的目錄下 C:\mingw-w64\msys\1.0

安裝完成之後,到C:\mingw-w64\msys\1.0\etc目錄中, 將fstab.sample 複製一份,且將其更名爲fstab,打開fstab,將其中相應的內容改爲mingw64的安裝目錄,圖中紅線框所示,保存退出。

接着編輯C:\msys\1.0\msys.bat文件,在開頭加上call "D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat",如下圖

2.3 配置pexports和yasm

將解壓縮的pexports.exe文件,拷貝到 C:\mingw-w64\msys\1.0\bin

將yasm-1.3.0-win64.exe改名爲yasm.exe,拷貝到C:\mingw-w64\msys\1.0\bin

將pkg-config_0.23-3_win32.zip解壓,得到pkg-config.exe,拷貝到C:\mingw-w64\msys\1.0\bin

將glib_2.18.4-1_win32.zip解壓,得到libglib-2.0-0.dll,拷貝到C:\mingw-w64\msys\1.0\bin

 

二,編譯

將ffmpeg和x264源代碼壓縮包解壓縮,放到一塊。

雙擊 C:\mingw-w64\msys\1.0 目錄下的msys.bat文件,啓動MINGW32窗口

 

1,編譯x264

1.1 configure

在MINGW32窗口中,cd到x264源碼根目錄,然後執行

./configure --enable-static --enable-shared --disable-asm --prefix="D:\Project\Survey\ffmpeg\lib64" --host=x86_64-w64-mingw32

--disable-asm的原因是:沒有asm,所以忽略掉。

配置結果爲

1.2 make & make install

接着執行以下命令

make

make install

此時,會在lib64目錄下,生成以下幾個文件夾

bin --> x264.exe 和 libx264-157.dll

include --> x264.h 和 x264_config.h

lib --> pkgconfig,libx264.a 和 libx264.dll.a

存在一個問題,怎麼沒有.lib文件呢?

1.3 使用.dll文件,生成.lib文件

命令行cd到 lib64/bin/ 目錄下

cd ../lib64/bin

執行下面命令,生成libx264-157.def文件

pexports libx264-157.dll > libx264-157.def

接着進入VS2010的命令行,切換到bin目錄下,根據.def文件生成.lib文件

輸入 LIB /machine:X86 /DEF:libx264-157.def

此時在bin目錄下,便生成了.lib文件

2,編譯ffmpeg

MINGW32窗口中,cd到ffmpeg根目錄

2.1 configure

./configure --prefix="D:\Project\Survey\ffmpeg\lib64" --enable-shared --arch=x86_64 --host-os=win64 --extra-cflags="-ID:\Project\Survey\ffmpeg\lib64\include"   --extra-ldflags="-LD:\Project\Survey\ffmpeg\lib64\bin"  --enable-gpl --enable-libx264 --enable-encoder=libx264

碰到如下錯誤

查看編譯日誌,在目錄\ffmpeg\ffbuild\config.log(configure過程中,碰到錯誤詳細信息,在這裏都可以找到)

解決辦法:修改/bin目錄下libx264-157.dll和libx264-157.lib的名稱

libx264-157.dll --> libx264.dll

libx264-157.lib --> libx264.lib

再次執行configure命令

2.2 make & make install

make 

make install

安裝成功後,在lib64/bin目錄下,會生成ffmpeg的庫文件及可執行文件,在lib64/include目錄下,有ffmpeg的頭文件。

2.3 拷貝依賴庫

運行lib64/bin目錄下的ffmpeg.exe,會提示缺少libwinpthread-1.dll

從C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin把libwinpthread-1.dll拷貝到lib64/bin目錄即可。

 

 

編譯過程中參考了以下文章,表示感謝!

https://blog.csdn.net/listener51/article/details/81609661

https://blog.csdn.net/najiutan/article/details/43762759

https://blog.csdn.net/NBA_1/article/details/82346564

https://blog.csdn.net/qq_34732729/article/details/87785734

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章