windows下使用msys2編譯FFmepg源碼

一、前言

    對於音視頻相關行業的開發者來講,很多時候需要自己手動編譯FFmpeg的源碼。雖然FFmpeg的官網中已經提供編譯好了的可執行文件(ffmpeg.exe),但是該可執行文件往往是不包含某些功能的(比如字幕功能drawtext,一個具體的例子爲https://blog.csdn.net/u014552102/article/details/104442111),要想開啓這些特殊功能,我們得手動編譯FFmpeg源碼,從而實現其功能定製。網上很多教程是使用mingw或者mingw加上msys編譯FFmpeg的,但是mingw可能會存在安裝過程中無法下載導致安裝不成功的問題。本文講述使用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_shell.cmd後,我們在彈出的窗口中執行命令:

pacman -S make yasm diffutils pkg-config

 

然後可能會出現錯誤如下圖所示:“錯誤:無法從 XXX: Operation too slow. Less than 1 bytes/sec......”

遇到這種情況,我們只要按照博文《MSYS2 更新源》或者《MSYS2更換國內源》裏面寫的那樣,更新一下源,再重新執行上述安裝軟件的命令,就可以了。

 

然後我們執行下面的命令查看安裝了哪些gcc:

pacman -Sl | grep "gcc"

 

可以看到mingw-w64-i686-gcc和mingw-w64-x86_64-gcc沒有安裝。

 

如果沒安裝,我們就執行下面的命令安裝:

pacman -S mingw-w64-i686-gcc 
pacman -S mingw-w64-x86_64-gcc 

 

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

 

安裝完gcc後,我們再次執行命令:pacman -Sl | grep "gcc",可以看到mingw-w64-i686-gcc和mingw-w64-x86_64-gcc都安裝了。

 

四、下載FFmpeg源碼

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

 

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

 

五、編譯FFmpeg源碼(編譯出32位庫)

通過命令提示符進入msys2的安裝目錄即msys64下, 執行命令

msys2_shell.cmd -mingw32

 

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

 

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

./configure --enable-shared --enable-decoder=h264 --enable-parser=h264 --arch=x86_32 --prefix=/usr/local/ffmpeg

注:上述命令不唯一,可以根據自己的需要設置其它選項。

 

然後按順序執行

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和庫了

 

六、參考文章

【FFMPEG系列】之windows下編譯FFMPEG篇----之二(MSYS2)

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