文章目錄
- 背景
- ubuntu22
- 結論
- win10
- 過程
- 對比結論
背景
順手編譯個ffmpeg試試,看看不同平臺下誰的配置比較繁瑣。
先讓gpt給出個教程:
ubuntu22
使用elementary-os7.1構建,看看有幾個坑要踩。
- 錯誤1: 依賴libavresample-dev未找到, 先無視。
- 錯誤2:沒有nasm/yasm, 直接禁用這個特性。
./configure --prefix=/usr/local --enable-shared --disable-static --disable-x86asm
- 警告3:
apt install pkg-config
解決。 - 錯誤4:好吧,動態庫成為了阻礙。
解決方法:
修改文件/etc/ld.so.conf, 內容追加一行 /usr/local/ffmpeg/lib/
使修改生效, 執行sudo /sbin/ldconfig
最終成功 執行 ffmpeg -version, 這是個啥版本呢(可能是nightly吧)。還有這ffmpeg就是個殼的感覺。
結論
2核的奔騰 + 虛擬機 debuff *2 , 不到半小時搞定, 還是比較快的。
ubuntu22把該有的依賴都提前預置了。
win10
不考慮子系統, 因為我打算構建exe程序。 所以使用msys2。
讓gpt告訴我們新的步驟。其實過程和上面的一樣。
過程
- 下載 https://www.msys2.org/ , 安裝最新版。
- ms,啟動
- 更新依賴
pacman -Syu # 重啟shell多來幾遍,直到沒有東西可更新
pacman -S make yasm pkg-config mingw-w64-x86_64-gcc
- 很好,configure的時候gg。
# 反向操作下,把靜態庫都打進exe里面
./configure --prefix=/usr/local --disable-shared --enable-static -disable-doc
錯誤1: ./configure: line 1773: cmp: command not found
解決pacman -S diffutils
5. make
有個我的疏忽, 如果你是2核心4線程的cpu, 那么應該make -j4而不是2, 不然cpu跑不滿
成功編譯出ffmpeg.exe, 打印ffmpeg -version 試試
但是,離開msys2環境, 在cmd中運行, 就缺少dll了。那就直接從msys2安裝目錄復制就行
最后試試從 flv視頻流中提取 一幀 輸出為圖片, 沒毛病,工作正常。
.\ffmpeg -i https://sample-videos.com/video321/flv/720/big_buck_bunny_720p_1mb.flv -frames:v 1 -q:v 2 output.jpg
至于如何把這兩個dll集成進ffmpeg.exe, 下一期再研究。
對比結論
就ffmpeg編譯過程而言, 似乎windows上更順利些, 遇到的坑比較少,但是win10下 ./configure慢很多, 不知為何。
其實吧, msys2 + mingw64 + pacman ,體驗幾乎和linux一致了。當然,肯定會有一定的坑存在,遇到再說吧, 事不宜遲,還是想想下午吃什么吧。