余談:FFMpegでhevc_nvencを使って10bitエンコードどする時のおまじない。「-pix_tmt p010le」φ(..)メモメモ

日記 > PC

ただのメモです。
夢の中で「p010le」ってなんだよって声が聞こえて…

間違った?オプション指定
(10bit指定も8bitで保存された(^◇^; さらにファイルサイズも増える。逆によく動いてくれていると^^;)

ffmpeg -hwaccel cuda -i input.mp4 -c:v hevc_nvenc -preset:v p7 -profile:v main10 -vsync vfr -rc-lookahead 32 -spatial-aq 0 -temporal-aq 0 -weighted_pred 0 -rc vbr -qmin:v 19 -qmax:v 25 -b_ref_mode 1 -multipass 2 -dpb_size 4 -g 300 -bf 4 -pix_fmt yuv420p -c:a copy output.mp4 2> output.log

いやいや、逆にこういう使い方がしたい人もいる?(いねーよw)
フィルタやエンコードを高ビットで…ないわ(笑)

そもそも高ビットでフィルタなど処理をして最終フォーマットに落とし込んでいるので、hevcのmain10でエンコードしたものは10bit対応フォーマットへ。

■ 10bitエンコードどする時のおまじない。「-pix_tmt p010le」
>ffmpeg -pix_fmts

・8bit:yuv420p
BITS_PER_PIXEL 12
10bit:p010le
BITS_PER_PIXEL 15

・nv12
BITS_PER_PIXEL 12
・yuv444p p016le
BITS_PER_PIXEL 24
・yuv444p16le
BITS_PER_PIXEL 48


※最後の「le」はリトルエンディアンです。

>ffmpeg -hide_banner -h encoder=hevc_nvenc

Encoder hevc_nvenc [NVIDIA NVENC hevc encoder]:
General capabilities: delay hardware
Threading capabilities: none
Supported hardware devices: cuda cuda d3d11va d3d11va
Supported pixel formats: yuv420p nv12 p010le yuv444p p016le yuv444p16le bgr0 rgb0 cuda d3d11


■ NVENCの対応次第

RTX2060とGTX750で同じ表示になるので、FFMpegの対応リストということになり、実際のエンコードで使うのはグラフィックボードのサポート範囲ということになりますね。

Video Encode and Decode GPU Support Matrix
Find the related video encoding and decoding support for all NVIDIA GPU products.