FFmpeg
FFmpeg是一個多媒體(影像與聲音)的處理軟體。
安裝
一般性的安裝可以直接裝Ubuntu系統的FFmpeg套件:
sudo apt install -y ffmpeg; sudo apt clean
但我們這邊建議裝SergeyD的PPA,主要是我會用到svt-av1與fdk-aac:
sudo add-apt-repository -y ppa:sergey-dryabzhinsky/ffmpeg; sudo apt update; sudo apt install -y ffmpeg; sudo apt clean
不過要注意SergeyD的PPA有包一些其他的軟體,可能會與現有的軟體衝突(尤其是自己的桌機),需要取捨。
自己編
這邊是自己嘗試在Docker裡面編一個靜態版本出來用,還在測試中,所以目前還很亂:
sed -i -e 's/archive/tw.archive/g' /etc/apt/sources.list
apt update
apt dist-upgrade -y
apt install -y build-essential cmake git nasm
apt clean
cd /tmp
git clone https://aomedia.googlesource.com/aom
mkdir aom_build
cd aom_build
cmake -p ../aom -DENABLE_TESTS=0 -DPREFIX=/usr
make -j install
cd /tmp
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
./configure \
--enable-gpl --enable-nonfree --enable-version3 \
--disable-shared --enable-static --extra-ldflags="-static" --pkg-config-flags="--static" \
--enable-libaom \
--enable-libdav1d \
--enable-libfdk-aac \
--enable-librav1e \
--enable-libsvtav1 \
--enable-libvmaf \
--enable-libvpx \
--enable-libx264 \
--enable-libx265
make -j
使用
- 大多數的情況下可以加上
-nostdin
,避免FFmpeg吃到stdin的資料。
範例
這邊是一般性的用法,把來源檔案(讓FFmpeg自己去讀)轉成H.264格式,使用CRF模式,參數設為18(依照官方的說明應該是肉眼看不太出來[1]):
ffmpeg -nostdin -i "${filename}.mp4" -c:v libx264 -crf 18 -c:a libfdk_aac -b:a 128k -ac 2 -y "${filename}-transcoded.mp4"
YUV444轉H.264
把YUV444格式的檔案轉成接近無損的H.264,其中需要指定:
-s 1920x1080
(來源影片的解析度)-r 30
(來源影片的畫面播放速率)
像是這樣:
ffmpeg -f rawvideo -s 1920x1080 -r 30 -pix_fmt yuv420p -i BirdsInCage_30fps.yuv -c:v libx264 -preset veryslow -crf 1 -y BirdsInCage.mp4
要注意的是-crf 0
會強制產生4:4:4的格式,最少需要-crf 1
才能轉成4:2:0
。
參考資料
- ↑ Encode/H.264 – FFmpeg. 2021-03-11 [2021-11-03] (English).
外部連結
- 官方网站 (英文)
- FFmpeg builds : SergeyD (英文)