libaom-AV1のエンコード処理が早くなったみたいなので、SSIMを比較しました。
ただ、2passエンコードはエラーになるので x265は2pass libaom-AV1は1passで処理した結果を比較してます。
・エンコード前の動画の情報(ffprobeで取得)
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 704x400 [SAR 1:1 DAR 44:25], 4134 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
・エンコード結果
x265
処理時間:real 7m33.135s
ファイルサイズ:823,979
SSIM:[Parsed_ssim_0 @ 0x55a5995c54c0] SSIM Y:0.976640 (16.315310) U:0.980143 (17.020788) V:0.985460 (18.374241) All:0.978694 (16.714957)
libaom-AV1
処理時間:real 3m30.543s
ファイルサイズ:801,592
SSIM:[Parsed_ssim_0 @ 0x562c7cdb6400] SSIM Y:0.986202 (18.601769) U:0.991233 (20.571444) V:0.993023 (21.563563) All:0.988177 (19.272819)
x265のバージョン
--------------------------------------------------------------------------------------------------------------------------------
x265 [info]: HEVC encoder version 3.2.1+1-b5c86a64bbbe
x265 [info]: build info [Linux][GCC 9.3.0][64 bit] 8bit+10bit+12bit
--------------------------------------------------------------------------------------------------------------------------------
libaom-AV1のバージョン
--------------------------------------------------------------------------------------------------------------------------------
[libaom-av1 @ 0x556478ba6000] 1.0.0-errata1-avif-732-g315c196dd
--------------------------------------------------------------------------------------------------------------------------------
x265の2passエンコードは以下のコマンドで
--------------------------------------------------------------------------------------------------------------------------------
# init
FTMP0=`date "+%Y%m%d%H%M%S"`
FTMP="${FTMP0}"
VFRAMES=$2
OPT="${OPT} -af dynaudnorm"
# OPT="${OPT} -pix_fmt yuv420p10le"
OPT="${OPT} -pix_fmt yuv420p12le"
# OPT="${OPT} -vframes ${VFRAMES}"
# OPT="${OPT} -s 704x396 -aspect 16:9"
OPT="${OPT} -c:v libx265 -b:v 250k"
OPT="${OPT} -preset veryslow"
# OPT="${OPT} -preset placebo"
OPT="${OPT} -x265-params stats=${FTMP}"
OPT="${OPT}:analysis-reuse-file=${FTMP}.dat"
# OPT="${OPT}:pmode=1:pme=1"
OPT="${OPT}:multi-pass-opt-analysis=1"
OPT="${OPT}:multi-pass-opt-distortion=1"
OPT="${OPT}:rd-refine=1"
OPT="${OPT}:subme=7"
OPT="${OPT}:rc-lookahead=250"
# OPT="${OPT}:vbv-maxrate=10000"
# OPT="${OPT}:vbv-bufsize=10000"
OPT="${OPT}:ssim-rd=1"
OPT="${OPT}:opt-cu-delta-qp=1"
OPT="${OPT}:aq-motion=1"
OPT="${OPT}:aq-mode=3"
OPT="${OPT}:bframes=16"
OPT="${OPT}:dynamic-refine=1:refine-intra=4"
OPT="${OPT}:tu-inter-depth=4:tu-intra-depth=4"
OPT="${OPT}:max-merge=5"
# OPT="${OPT}:pools=32"
AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "
touch "$1.x265.mp4"
ffmpeg -y -i "$1" -pass 1 \
${OPT}:pass=1 \
-an -f mp4 /dev/null && \
ffmpeg -y -i "$1" -pass 2 \
${OPT}:pass=2 \
${AUDIO} \
-f mp4 "$1.x265.mp4"
rm "${FTMP}"
rm "${FTMP}.dat"
rm "${FTMP}.cutree"
--------------------------------------------------------------------------------------------------------------------------------
libaom-AV1の1passエンコードは以下のコマンドで
--------------------------------------------------------------------------------------------------------------------------------
AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "
OPT="${OPT} -tiles 1x1"
OPT="${OPT} -cpu-used 3"
OPT="${OPT} -b:v 80k"
OPT="${OPT} -aq-mode 3"
OPT="${OPT} -arnr-strength 6"
OPT="${OPT} -denoise-block-size 1"
ffmpeg -y -i "$1" \
-c:v libaom-av1 \
-strict experimental \
-row-mt 1 \
${OPT} \
-threads 14 \
${AUDIO} \
./output.libaom.mp4
--------------------------------------------------------------------------------------------------------------------------------