結果轉完分數只有60。
基本知識
CRF 越高壓縮率越高,畫質越低。而 CRF 值越低,畫質越高,但文件大小也越大。CRF 範圍是指數級的,因此增加 CRF 值 +6 會導致位元率/文件大小大約減半 (來源)。
預設 CRF 值:
- H.264: 23
- H.265 (x265): 28
- VP9: 31
- AV1: 35
每個編解碼器的 CRF 是獨立的。推薦的 CRF 設置也可以在 這裡 找到。
迷思:CRF 18 為視覺無損。考慮CRF 12 才能使高解析度的影片在超大屏幕上恰好視覺無損,那 CRF 18 如何能視覺無損?
Visual lossless quality always depends on the source. That's why there are various encoder parameters to tweak.
安裝
目前使用HandBrake (v1.8.0) 有異常旋轉問題!
GUI: HandBrake. It uses FFmpeg as its backend.
CLI: FFmpeg
brew install ffmpeg
使用方法
HandBrake
- 選擇一個
Preset
- 點擊
Open Source
- 選擇
title
並單獨調整 - 將此標題添加到隊列
- 添加所有文件到隊列後,開始轉換。
FFmpeg 使用方法
轉換整個資料夾
將文件夾中的 \*.mov
轉換為 h.265 並輸出到 ../output
文件夾
for file in *.mov;
do ffmpeg -i "$file" -c:v libx265 -tag:v hvc1 -crf 28 "$../output/{file%.mov}.mp4";
done
加上 hvc1 標籤以支援蘋果設備讀取。
Two-Pass Conversion
for file in *.mov; do
base="${file%.mov}"
ffmpeg -y -i "$file" -c:v libx265 -b:v 1500k -x265-params pass=1 -an -f null /dev/null && \
ffmpeg -i "$file" -c:v libx265 -b:v 1500k -x265-params pass=2 -c:a copy "../output/${base}.mp4"
done
YouTube 影片
YouTube 1080p 影片的畫質設定 (Source)
ffmpeg -i <INPUT> -c:v libx264 -preset slow -crf 18 -vf scale=out_color_matrix=bt709 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -c:a aac -ar 48000 -ac 2 -b:a 320k -profile:v high -level 4.0 -bf 2 -coder 1 -pix_fmt yuv420p -b:v 10M -threads 4 -cpu-used 0 -r 30 -g 15 -movflags +faststart <OUTPUT>
轉碼評分
VMAF 是 Netflix 開發的客觀全參考視訊品質指標。
ffmpeg -i "outputFile" -i "sourceFile" -lavfi libvmaf=log_fmt=json:log_path=output.json -f null -
Find your vmaf models for macOS brew install
brew list libvmaf
# find "outputPath" -name "vmaf_v0.6.1.pkl"
find "/opt/homebrew/Cellar/libvmaf/3.0.0" -name "vmaf_v*.pkl"
ffmpeg -i input.mp4 -i output.mp4 -lavfi libvmaf="model_path=/path/model/vmaf_v0.6.1.pkl" -f null -