Mac mini安裝ffmpeg輸出AV1

因為新的M1(Apple Silicon) Mac mini的到來,還是要比較一下轉檔的性能,先不考慮常見支援硬體加速的H.264、H.265格式,直接比較AV1這種還只支持軟解的編碼格式的性能。 

測試的工具仍然沿用之前在Ubuntu測試的ffmpeg與30秒的H.264影音檔。


先安裝Homebrew,在終端介面輸入

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安裝會花點時間,完成後接著安裝ffmpeg與wget,同樣在終端輸入

/opt/homebrew/bin/brew install ffmpeg wget --force

安裝好ffmpeg與wget後,開始下載影片素材,在終端鍵入

/opt/homebrew/bin/wget https://odysee.com/$/download/1080ph264/3e37d5c2aa0ac94c87f25cc115790accfa328785

重新命名檔案為h264.mp4,在終端鍵入

mv 3e37d5c2aa0ac94c87f25cc115790accfa328785 h264.mp4

開始轉檔成AV1,因為M1是8核心,我嘗試 -threads 開16個線程,另外測試Mac mini 2012是雙核心 -threads 開4個線程(實際測試8線程速度會再提升,大於8線開始性能回落)

/opt/homebrew/bin/ffmpeg -i h264.mp4 -c:v libaom-av1 -crf 39 -b:v 0 -threads 16 av1.mp4

M1導出AV1第22影格速度
2012導出AV1第22影格速度

從測試結果來看,ffmpeg在M1的導出速度約為2012 intel i5的0.7倍,減損性能約為三成左右,應該是目前的ffmpeg是透過Rosetta 2安裝的,未來需要測試直接運行ffmpeg後性能是否提升,不然M1高性能的運算有點浪費。

2012安裝Windows10導出AV1第22影格速度

額外測試2012機型,
安裝Windows系統跑ffmpeg速度0.00412x,
略少於Mac系統跑ffmpeg速度0.00478x,
還是高於M1的Mac系統跑ffmpeg速度0.00379x。

2021/01/11更新
在網路上尋找資料才發現,
從活動監視器的建築可以直接判斷程式是直接跑Apple M1還是Rosetta 2跑intel,
結果顯示Homebrew安裝的ffmpeg已經可以直接在M1運行,
轉檔單跑軟編M1性能輸給intel i5 3210M這顆雙核四線處理器,
在Mac mini M1基本上沒有Macbook M1對於散熱功耗、續航那麼大的需求,
比較起來性能差一截還不能自己擴充記憶體,
大概只適合運行FCP這類剪輯軟體,
轉檔H.264、H.265以外的影音格式來說還是intel機種還是比較吃香的。

Mac mini M1運行ffmpeg 活動監視器數據

2022/3/28更新
由於libaom-av1組件編碼速度不太符合效率,
Mac適配的ffmpeg也不支持SVT-AV1編碼組件,
退而求其次改用rav1e組件來編碼視頻,操作指令範例如下

原指令
/opt/homebrew/bin/ffmpeg -i h264.mp4 -c:v libaom-av1 -crf 39 -b:v 0 -threads 16 av1.mp4

rav1e指令
/opt/homebrew/bin/ffmpeg -i  h264.mp4 -c:v librav1e -qp 100 -rav1e-params speed=6:low_latency=true -tiles 16 av1.mp4

rav1e如需改指定碼率輸出指令為
/opt/homebrew/bin/ffmpeg -i  h264.mp4 -c:v librav1e -b:v 1000K -rav1e-params speed=6:low_latency=true -tiles 16 av1.mp4

rav1e指令說明>>>
-qp 編碼質量 數值介於0-255,測試控制在100左右質量約等於-crf 39
-rav1e-params speed= 編碼速度 數值介於0-10,預設值為6
low_latency=true 啟用低延遲模式,畫格不重新排列
-tiles 多圖塊編碼 拆分影像區塊提供類似於libaom-av1的-threads多線程編碼加速,詳細請參考這篇

2022/8/24更新
由於brew已適配svt-av1模組,支持macOS 10.15(Catalina)以上的系統與ARM處理器,
可透過tap的方式加入svt-av1安裝ffmpeg。

務必先移除brew原先安裝的ffmpeg,請於終端機鍵入
brew uninstall ffmpeg

使用tap運行ffmpeg
brew tap homebrew-ffmpeg/ffmpeg

安裝ffmpeg並同時加入svt-av1選項
brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-svt-av1

最後exit退出關閉終端機,重新開啟終端機使新安裝的ffmpeg生效。

原av1轉檔指令
/opt/homebrew/bin/ffmpeg -i h264.mp4 -c:v libaom-av1 -preset 3 -crf 28 -b:v 0 -threads 16 av1.mp4

改svt-av1指令
/opt/homebrew/bin/ffmpeg -i h264.mp4 -c:v libsvtav1 -preset 3 -crf 28 -pass 1 -b:v 0 -threads 16 av1_p1.mp4 && /opt/homebrew/bin/ffmpeg -i h264.mp4 -c:v libsvtav1 -preset 3 -crf 28 -pass 2 -b:v 0 -threads 16 av1_p2.mp4

建議svt-av1參數
/opt/homebrew/bin/ffmpeg -i h264.mp4 -c:a copy -c:v libsvtav1 -preset 5 -crf 30 -threads 16 av1.mp4

2023/12/20更新
因為Big Sur超出brew支援更新版本,如要運行ffmpeg需改用預編譯好的舊版
下載到Mac的使用者目錄底下解壓縮(使用者名稱以user示範),打開終端機鍵入
vim ~/.zprofile

新增環境變數
export FFMPEG_HOME=/Users/user/ffmpeg
export PATH=$PATH:$MAVEN_HOME/bin:$FFMPEG_HOME:$JAVA_HOME/bin:$GRADLE_HOME/bin:.
請注意第一行是指 export FFMPEG_HOME=/Users/使用者目錄名稱/ffmpeg

接著切入使用者目錄
cd /Users/user/

將ffmpeg加上自簽章
xattr -cr ./ffmpeg
codesign -s - ./ffmpeg

檢驗ffmpeg的校驗碼是否為 "345107d72ea1142d873842ec85456f7a7e80be5458ae554ac82e3ae2725735dd"

shasum -a 256 ffmpeg

完成後重啟終端機鍵入測試
ffmpeg -version

開始轉檔
ffmpeg -i h264.mp4 -c:a copy -c:v libsvtav1 -preset 5 -crf 30 -threads 16 av1.mp4

留言

這個網誌中的熱門文章

Redmi紅米 Note4x (Qualcomm SD625)啟用VoLTE功能

紅米手機MIUI設置SD卡為延伸儲存空間