一、前言
本文講述使用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更換國内源》
相關學習資料推薦,點選下方連結免費報名,先碼住不迷路~】
【免費分享】音視訊學習資料包、大廠面試題、技術視訊和學習路線圖,資料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點選加群免費領取~
四、在msys2中安裝軟體(啟動msys2_shell.cmd)
1. 安裝yasm
重新開機msys2_shell.cmd後,我們在彈出的視窗中執行指令:pacman -S make yasm diffutils pkg-config
2. 安裝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源碼的目錄,如下圖所示:
到ffmpeg-4.2.2的目錄下有一個configure檔案,執行configure指令生成Makefile:
prefix=/usr/local/ffmpeg可以設定為自己定義的存放路徑,如prefix=C:/Users/xxx/Desktop/ffmpeg
注:上述指令不唯一,可以根據自己的需要設定其它選項。生成Makefile可能需要很長時間,需耐心等待。
以上四個步驟可以在批處理檔案中一次執行
注:每條指令執行可能需要很長時間,需耐心等待
執行完後會在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
原文 msys2編譯FFmpeg全網最詳細步驟_狂奔之林的部落格-CSDN部落格