FFmpeg和x264的windows版本編譯安裝記錄

網上有各種版本的介紹,建議優先參考ffmpeg官網的說明,因爲更新時間關係,可能細節有差異,但差異不大:https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC

 

1. 下載和安裝YASM

這一步好像已經不必要,最新版的代碼中已經使用nasm來代替yasm。

YASM下載地址:http://yasm.tortall.net/Download.html,下載其64位版本Win64 .exe (64 位 Windows 通用),即頁面中的Win64 .exe (for general use on 64-bit Windows)。

下載後,將下載回來的yasm-1.3.0-win64.exe 改名爲yasm.exe,並放置於 MSYS2 安裝目錄:/msys64/usr/bin/ 中。

 

2、下載msys64並安裝,下一步操作即可;

 

3、進入msys2安裝必須要的編譯環境工具;

C:\msys64\usr>cd ..

C:\msys64>msys2_shell.cmd -mingw32 後

更新其他包

john@LIYIZHANG-PC MINGW64 ~

分別安裝32位版本和64位版本的工具鏈

$ pacman -S mingw-w64-i686-gcc 

$ pacman -S mingw-w64-x86_64-gcc

$ pacman -S libtool

$ pacman -S autoconf

$ pacman -S automake

$ pacman -S awk

$ pacman -S base-devel 

 

如果安裝失敗,請搜索修改pacman的源到國內的地址,一定要安裝成功,失敗了可以多重試幾次;

下載完成後,重命名msys64/usr/bin/link.exe 爲msys64/usr/bin/link.bak, 避免和MSVC 的link.exe牴觸;

 

4、先修改文件msys2_shell.cmd:註釋掉set MSYS2_PATH_TYPE=inherit前面的; 然後在開始菜單中輸入: vs 2017就會出現列表,選擇打開適用於 VS 2017 的 x64 本機工具命令提示,在窗口中輸入進入msys64所在目錄後

啓動mingw;

64位的啓動:

c:\msys64>msys2_shell.cmd –mingw64

 

32位的啓動:

c:\msys64>msys2_shell.cmd –mingw32

 

5、編譯安裝x264,注意32位和64位的編譯的不同:

如果是編譯32位版本的x264,請打開MSYS2 MinGW 32-bit,然後執行以下命令:

c:\msys64>msys2_shell.cmd -mingw32

./configure --prefix=/usr/local/ --host=i686-w64-mingw32 --enable-shared  --extra-ldflags=-Wl,--output-def=libx264.def 

 

如果是編譯64位版本的x264,請打開MSYS2 MinGW 64-bit,然後執行以下命令:

./configure --prefix=../build --host=x86_64-w64-mingw32 --enable-shared  --extra-ldflags=-Wl,--output-def=libx264.def 

 

將DEF文件轉換爲Lib文件

打開Visual Studio的VC/Bin目錄,下面有個lib工具可以用來生成Lib文件

32位版本Lib文件生成:

VC/Bin/Lib /DEF:libx264.def /machine:x86

64位版本Lib文件生成:

VC/Bin/amd64/Lib /DEF:libx264.def /machine:x64

 

6、配置編譯ffmpeg,在開始菜單中輸入: vs 2017就會出現列表,選擇打開適用於 VS 2017 的 x64 本機工具命令提示,在窗口中輸入進入msys64所在目錄後,啓動mingw64:

c:\msys64>msys2_shell.cmd –mingw64

64位的:

./configure --target-os=win64 --arch=x86_64 --toolchain=msvc --enable-asm --enable-yasm --disable-avdevice  --disable-doc --disable-ffplay --disable-ffprobe --enable-cross-compile --enable-shared  --enable-static --disable-bzlib --disable-libopenjpeg --disable-encoders --disable-iconv --disable-zlib --prefix=../ffmpeg_build_x86 --enable-gpl --enable-nonfree  --enable-encoder=libx264 --enable-encoder=mjpeg  --enable-libx264  --extra-cflags="-I/usr/local/include"  --extra-ldflags="-LIBPATH:/usr/local/lib" 

32位的:

./configure  --target-os=win32 --arch=i386 --toolchain=msvc  --enable-asm --enable-yasm --disable-avdevice  --disable-doc --disable-ffplay --disable-ffprobe --enable-cross-compile --enable-shared  --enable-static --disable-bzlib --disable-libopenjpeg --disable-encoders --disable-iconv --disable-zlib --prefix=../ffmpeg_build_x86 --enable-gpl --enable-nonfree  --enable-encoder=libx264 --enable-encoder=mjpeg  --enable-libx264  --extra-cflags="-I/usr/local/include"  --extra-ldflags="-LIBPATH:/usr/local/lib" 

注意--extra-ldflags和--extra-cflags配置的x264中,必須區分引用的是32位的x264還是64位的,否則會一直出現找不到libx264錯誤的情況;

不能使用make -j4並行編譯,雖然很快,但可能會出現 Could not create temporary library的錯誤,另外,也有可能是--prefix所在路徑不存在或者磁盤空間不夠了導致的。

參考:https://it3q.com/article/45

https://blog.csdn.net/xinxinsky/article/details/79877794

 

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