msys2編譯FFmpeg全網最詳細步驟

一、前言

   本文講述使用msys2編譯ffmpeg源碼的方法,使用該方法不需要安裝mingw。msys2是一個在windows上模擬linux環境的軟件,在msys2上可以使用大多數的shell命令,它可以在一定程度上代替虛擬機,讓用戶可以在windows上使用shell。

 

二、下載安裝msys2

首先我們在http://msys2.github.io/ 下載msys2。進入該網址後,可以看到如下頁面:

這裏由於博主的電腦是win10、64位操作系統,所以選擇msys2-x86_64-20190524.exe。下載下來後雙擊安裝。這裏博主安裝到D盤,因爲我們安裝完msys2後是要在裏面安裝其它的軟件的,隨着裏面安裝的軟件越來越多,msys2在電腦中佔用的空間會越來越大,所以不推薦安裝在C盤(系統盤)。

 

安裝過程中,我們可能會發現,進度會一直卡在中間,無法繼續執行,然後“隱藏詳細信息”這裏顯示“Updating trust database”,如下圖所示。當遇到這個問題時,我們只要點擊右下方的“取消”按鈕,然後重新安裝即可。

 

 

 

安裝完成後,我們進入安裝目錄,打開msys2_shell.cmd

在彈出的窗口上右擊, 選擇Options,按照如下設置更改字符集,如下圖所示,否則可能會出現中文亂碼的問題。更改完成後,點擊“Save按鈕”,這裏要注意更改完成後得要重新啓動msys2_shell.cmd,設置才能生效。

 

 

 

三、MSYS2更換國內源

參見《MSYS2更換國內源

 

四、在msys2中安裝軟件(啓動msys2_shell.cmd)

1. 安裝yasm

重啓msys2_shell.cmd後,我們在彈出的窗口中執行命令:pacman -S make yasm diffutils pkg-config

 

2. 安裝gcc

Windows: 

pacman -S mingw-w64-x86_64-gcc

Linux:

pacman -S mingw-w64-i686-gcc

如果報錯:“錯誤:無法從 XXX: Operation too slow. Less than 1 bytes/sec......”,我們只要再重新執行上述命令安裝就可以了。在每一次重新安裝gcc的過程中,下圖所示的“下載大小”的值都會變小,所以我們在安裝gcc失敗後,多次重複安裝,讓“下載大小”的值越來越小,最終我們就能成功安裝的。

 

安裝完gcc後,我們可執行命令:pacman -Sl | grep "gcc"查看gcc是否安裝完成

 

五、下載FFmpeg源碼

我們進入FFmpeg官網http://ffmpeg.org/download.html#releases,下載最新版本的FFmpeg源碼(FFmpeg4.2.2)。

 

在msys2的安裝目錄下新建一個文件夾“SourceCode”,將下載下來的FFmpeg源碼解壓,放到該文件夾下,如下圖所示:

 

 

六、編譯FFmpeg源碼(編譯出32位庫)-64位庫同理

 

通過命令提示符進入msys2的安裝目錄即msys64下, 執行命令: msys2_shell.cmd -mingw32

 

在啓動的窗口中執行命令:cd /SourceCode/ffmpeg-4.2.2,進入msys2中ffmpeg源碼的目錄,如下圖所示:

第一步清理

make clean

可以看到ffmpeg-4.2.2的目錄下有一個configure文件,執行configure命令生成Makefile:

 

第二步configure命令

./configure  --enable-shared --enable-static --arch=x86_32  --prefix=/usr/local/ffmpeg

--arch=x86_32

32位庫

 

--arch=x86_64

64位庫

 

 

prefix=/usr/local/ffmpeg可以設定爲自己定義的存放路徑,如prefix=C:/Users/xxx/Desktop/ffmpeg

注:上述命令不唯一,可以根據自己的需要設置其它選項。生成Makefile可能需要很長時間,需耐心等待。

 

第三步編譯

make

第四步安裝

make install

以上四個步驟可以在批處理文件中一次執行

注:每條命令執行可能需要很長時間,需耐心等待

執行完後會在msys64/usr/local目錄下生成ffmpeg目錄,生成的庫和可執行文件就在msys64/usr/local/ffmpeg/bin目錄下,如下圖所示:

 

 

由於用msys2生成的庫有依賴,比如生成的32位庫依賴於msys64\mingw32\bin下的dll庫,所以我們將msys64\mingw32\bin下的所有dll都拷貝到msys64\usr\local\ffmpeg\bin下。這樣我們就能使用生成的ffmpeg.exe和庫了

依賴如下:

七、參考文章

windows下使用msys2編譯FFmepg源碼

msys2 vs2015 ffmpeg 編譯

 

八、需要x264庫需先編譯x264庫再編譯Ffmpeg

 

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