QSV、NVENC、とはなんぞや。(エンコード関連)その2

Ubuntu18 serverにffmpegを入れたので、nvencの設定をいじってみました。

早速ですが、H.265での4つのエンコードを比較してみます。

条件は

  • ビットレートは1000k前後。
  • 画像サイズは変更なし。
  • 音声はまだ考えない。

それでは見てみましょう。

左上:cpu 2passエンコード(音声は考慮していません。)

ffmpeg -hwaccel cuvid -i $INPUT -y -c:v libx265 -preset veryfast -b:v 1000k -rc vbr_hq -2pass true -x265-params pass=1 -an -f mp4 /dev/null && \
ffmpeg -hwaccel cuvid -i $INPUT -y -c:v libx265 -preset veryfast -b:v 1000k -rc vbr_hq -2pass true -x265-params pass=2 out3.mp4

右上:NvEnc preset fast

ffmpeg -hwaccel cuvid -i $INPUT -y -c:v hevc_nvenc -preset fast -b:v 1000k out4.mp4

左下:NvEnc preset slow

ffmpeg -hwaccel cuvid -i $INPUT -y -c:v hevc_nvenc -preset slow -b:v 1000k out5.mp4

右下:NvEnc preset slow 改造版。

ffmpeg \
	-ignore_unknown \
	-dn \
	-v info \
	-y -hwaccel cuvid \
	-analyzeduration 180M \
	-probesize 200M \
	-c:v mpeg2_cuvid \
	-deint adaptive \
	-drop_second_field 1 \
	-i $INPUT \
	-sn \
	-c:v hevc_nvenc \
	-vf scale_npp=1280:-1 \
	-preset slow \
	-b_ref_mode 2 \
	-rc vbr_hq \
	-b:v 1000k \
	-rc-lookahead 32 \
	-temporal_aq true \
	-spatial_aq true \
	-aq-strength 8 \
	-c:a ac3 -ac 6 -ar 48000 -ab 448k -dialnorm -24 -dsur_mode 0 -original 1 -dmix_mode 2 -channel_layout 63 \
	-fflags +discardcorrupt \
	out.mp4

上記のコマンドで生成された画像を見ながら気になったところを切り出してみました。

こうやって見ると、NvEnc(GTX1660Super)は十分すぎるほどの威力がありますね。