天天看點

msys2編譯FFmpeg全網最詳細步驟

作者:音視訊流媒體技術

一、前言

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

二、下載下傳安裝msys2

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

msys2編譯FFmpeg全網最詳細步驟

這裡由于部落客的電腦是win10、64位作業系統,是以選擇msys2-x86_64-20190524.exe。下載下傳下來後輕按兩下安裝。這裡部落客安裝到D盤,因為我們安裝完msys2後是要在裡面安裝其它的軟體的,随着裡面安裝的軟體越來越多,msys2在電腦中占用的空間會越來越大,是以不推薦安裝在C槽(系統盤)。

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

msys2編譯FFmpeg全網最詳細步驟

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

msys2編譯FFmpeg全網最詳細步驟

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

msys2編譯FFmpeg全網最詳細步驟

三、MSYS2更換國内源

參見《MSYS2更換國内源》

相關學習資料推薦,點選下方連結免費報名,先碼住不迷路~】

【免費分享】音視訊學習資料包、大廠面試題、技術視訊和學習路線圖,資料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點選加群免費領取~

msys2編譯FFmpeg全網最詳細步驟

四、在msys2中安裝軟體(啟動msys2_shell.cmd)

1. 安裝yasm

重新開機msys2_shell.cmd後,我們在彈出的視窗中執行指令:pacman -S make yasm diffutils pkg-config

2. 安裝gcc

msys2編譯FFmpeg全網最詳細步驟

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編譯FFmpeg全網最詳細步驟

在msys2的安裝目錄下建立一個檔案夾“SourceCode”,将下載下傳下來的FFmpeg源碼解壓,放到該檔案夾下,如下圖所示:

msys2編譯FFmpeg全網最詳細步驟

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

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

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

msys2編譯FFmpeg全網最詳細步驟
msys2編譯FFmpeg全網最詳細步驟

到ffmpeg-4.2.2的目錄下有一個configure檔案,執行configure指令生成Makefile:

msys2編譯FFmpeg全網最詳細步驟

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

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

msys2編譯FFmpeg全網最詳細步驟

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

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

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

msys2編譯FFmpeg全網最詳細步驟
msys2編譯FFmpeg全網最詳細步驟

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

依賴如下:

msys2編譯FFmpeg全網最詳細步驟

七、參考文章

windows下使用msys2編譯FFmepg源碼

msys2 vs2015 ffmpeg 編譯

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

原文 msys2編譯FFmpeg全網最詳細步驟_狂奔之林的部落格-CSDN部落格

繼續閱讀