利用 MSYS2 來編譯 Windows 上的 FFMPEG

又是因為工作~ 要研究一下在進行視訊串流時,為何 player 端的 latency 會越來越長。雖然原來的問題是用 vlc 發生的,但 VLC 要建置感覺不太容易。於是想到了 ffmpeg 裡自帶的 ffplay,就可以來進行這個試驗和嘗試必要的修改。ffmpeg 原始碼裡自帶了很多 library, 以往編譯的經驗也蠻順利的,所以就決定是它了。

用 MSYS2 來做為編譯環境

MSYS2 是一套類似 Cygwin 或 WSL 的系統,它自帶了自己的套件管理程式 pacman,所以使用上會比 Cygwin 好一點,但用比不上 apt 方便 (因為套件豐富度比較不上)。因為在 WSL 編譯不成功,且編出來的可能不是 native 的 Windows 程式,於是從網路上看到的文章是以 MSYS2 (操作環境) + MingW (編譯器) 來進行,也成功編成了,所以就選用了這方案。

安裝 MSYS2

到 MSYS2 的官網下載安裝檔,然後安裝到 D:\MSYS64,基本上就是下一步到底。

安裝完畢後不要選立即執行。接著打開 D:\msys64, 執行 msys2.exe, 以一般的傳統環境來執行。

安裝套件

下達以下命令,來更新並安裝所需的編譯套件。為了簡化流程,中間的項目都直接全選安裝(按enter即可)

完成後,關閉目前的視窗。

以 MINGW 編譯 FFMPEG

重新以 D:\MSYS64\mingw32.exe 啟重新視窗,此指令可設定好所需的編譯環境。

編繹 SDL

為了播放畫面,ffmpeg 需要 SDL 這個套件來將解碼的畫面輸出的螢幕。下面的命令直接下載、解壓編譯與安裝。

編譯 FFMPEG

下面直接上命令,下載與編譯 ffmpeg 與 ffplay

播放影片

最後就可用編譯出來的 ffplay 來播放影片了, ffplay 的原始檔位於 fftools/ffplay.c,等將來要研究的時候再來修改了。

 

結語

整個看下來編譯 ffmpeg 並不難,也談不上什麼訣竅可言,但這就是所謂的 know-how 吧。編出來的檔案,好像對於 x264, x265 只有解碼的功能,而沒有編碼。這部份我就不研究了,畢竟我主要是要研究 latency。若不想額外去研究 264/265 怎麼裝,可以直接用 mpeg4 這個 codec,算是勉強的替代品,就是畫質差了點。

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 55 − = 53