因應4K與8K影音流行,傳統H.264編碼已不敷使用,進而出現H.265高效編碼格式來提高解析度與顏色深度支援,然而授權金高昂的問題,Google、Netflix等網路巨擎透過VP9延伸開源的先進影音編碼格式,有著比VP9更高的壓縮效率與畫質,先前習慣在本地Windows執行編碼,後來覺得資源實在不堪負荷轉向雲端主機來操作。
由於部分預設ffmpeg尚未將AV1編碼納入,需要在安裝時額外帶入設定檔來處理,過程稍微麻煩,好在網上已經有合適的腳本可以直接運行。
在ubuntu20.04終端介面安裝新版ffmpeg
從遠端載入安裝腳本到雲端主機
sudo wget https://gist.githubusercontent.com/sparrc/026ed9958502072dda749ba4e5879ee3/raw/212d434806bca11ec696c97199f6ad1ed00f9950/install-ffmpeg.sh
#或備用節點(上下兩個來源擇一下載即可)
sudo wget https://dl.dropboxusercontent.com/s/gcl6ai2wseefs8b/install-ffmpeg.sh
#改檔案權限
sudo chmod +x install-ffmpeg.sh
#執行腳本安裝
sudo ./install-ffmpeg.sh
#轉檔av1範例,先載入影片檔案到雲端主機
wget https://odysee.com/$/download/1080ph264/3e37d5c2aa0ac94c87f25cc115790accfa328785
#由於範例檔名稱有點問題,我們可以重新命名
mv 3e37d5c2aa0ac94c87f25cc115790accfa328785 h264.mp4
#轉檔av1指令,-threads為線程數,-crf質量介於0~63之間(27高畫質、33一般畫質、39低畫質)數值越大質量越低,h264.mp4為輸入範例檔,av1.mp4為輸出檔案命名
~/bin/ffmpeg -i h264.mp4 -c:v libaom-av1 -crf 39 -b:v 0 -threads 2 av1.mp4
#須注意~/bin/ffmpeg路徑如果顯示不存在,可能是配置到root帳戶底下,指令開頭應改成sudo /root/bin/ffmpeg,此時請留意檔案讀寫權限避免輸出後無法取回
接著比較看看兩台輸出的性能差異,分別啟用GCP的N2機種(intel)與N2D機種(AMD),資源均劃分雙核心與2GB記憶體、10GB的SSD空間,比較出純CPU轉檔來說N2D機種輸出AV1較為快速。
N2機種
N2D機種
同樣輸出前22影格,intel機器跑0.00372x,AMD機器跑0.0045x,相比之下性能提升約1.2倍(120%),但實際費用AMD的N2D卻比較便宜,希望GCP性價比能越來越好。
2022/3/28更新
經過嘗試將原指令
ffmpeg -i h264.mp4 -c:v libaom-av1 -crf 39 -b:v 0 -threads 16 av1.mp4
修改為
ffmpeg -i h264.mp4 -c:v libsvtav1 -crf 39 -b:v 0 -threads 16 av1.mp4
建議參數
ffmpeg -i h264.mp4 -c:a copy -c:v libsvtav1 -preset 5 -crf 30 -threads 16 av1.mp4
編碼速度約能提升25~50倍不等,4K影片在AMD平台8核心編碼能達到1X編碼性能(此時libaom-av1約0.02到0.04之間),每秒輸出一秒多的影片可用性大幅提高。
2022/3/29更新
28日提供的ppa安裝方案經測試無法輸出超過9分15秒的視頻,
測試多種一鍵安裝腳本在Ubuntu20.04都有安裝失敗的紀錄,
故整理ffmpeg官網與SVT-AV1編譯的指令如下。
sudo apt-get update -qq && sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libmp3lame-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
meson \
ninja-build \
pkg-config \
texinfo \
wget \
yasm \
zlib1g-dev
針對Ubuntu20.04系統版本安裝相關套件。
sudo apt install libunistring-dev libaom-dev
創建資料夾
mkdir -p ~/ffmpeg_sources ~/bin
git clone --depth=1 https://gitlab.com/AOMediaCodec/SVT-AV1.git
cd SVT-AV1
cd Build
cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
make -j $(nproc)
sudo make install
編譯ffmpeg並啟用libsvtav1套件。
git clone --depth=1 https://github.com/FFmpeg/FFmpeg ffmpeg
cd ffmpeg
export LD_LIBRARY_PATH+=":/usr/local/lib"
export PKG_CONFIG_PATH+=":/usr/local/lib/pkgconfig"
./configure --enable-libsvtav1
make -j $(nproc)
測試家目錄底下的視頻輸出為av1視頻。
~/SVT-AV1/Build/ffmpeg/ffmpeg -i h264.mp4 -c:v libsvtav1 -crf 39 -b:v 0 -threads 16 av1.mp4
留言
張貼留言