參考了衆位博友的文章,幾番折騰後,終於在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