ただ、もめんたりー・リリィなどは2Kアプコンであっても、従来の2K放送に対して画質面の有利さが目立つ場合があって、4K版を録画・保存したくなったのだけど、そのままだと2Kアプコンなのに容量くうし、なんかHLGに変換されているせいでHDR表示してもなぜか暗いしで、再エンコードしてみたので、そのメモ。
フィルタ処理
4K 10bitのHEVCはなかなか重くて、Aviutlで全部処理すると結構しんどかった。そこで、NVEncを使ってhwデコードからフィルタ部分についてはなるべくGPUで処理してみた。
ほかにはAmatsukazeで全部処理する方法とかffmpegで全部処理する方法とかもありそうだけど、まずは自分が慣れている方法でお手軽にやってみた。
1. カット編集Aviutlでカット編集して、その結果をTrimエクスポートプラグインで取得して--trimに渡すだけ。NVEnc 7.79からTrimエクスポートプラグインのフォーマットそのままで指定可能。
例えば、
--trim Trim(756,29703)++Trim(33901,62372)++Trim(65969,91862)++Trim(95461,97258)
2. HLG→SDRいろいろ試したけど、とりあえずはlibplaceboのtonemappingフィルタがよさそう。大まかにはSDRと近い色になると思う。
例えば、
--vpp-libplacebo-tonemapping src_csp=hlg,dst_csp=sdr,gamut_mapping=relative,knee_offset=0.5
3. 60fps→24fps5フレーム中、重複フレームを探して、3フレームをドロップさせた。
--vpp-decimate cycle=5,drop=3,blockx=16,blocky=16
4. 2160p→1080p2160pでエンコードしてもいいのかもだけど、どうせアプコンなのと2160pだとエンコードに時間がかかるので縮小。
--output-res 1920x1080
あまり細かいことは気にしないので、とりあえずこれだけ。
NVENCでhwエンコード
1920x1080 AV1 10bitでエンコード。
x64\NVEncC64.exe -u quality -c av1 --output-depth 10 --qvbr 32 --multipass 2pass-full --ref 5 -b 7 --bref-mode each --nonrefp --aq --aq-temporal --aq-strength 15 --lookahead 32 --audio-copy --colormatrix auto --colorprim auto --transfer auto --vpp-decimate cycle=5,drop=3,blockx=16,blocky=16 --vpp-libplacebo-tonemapping src_csp=hlg,dst_csp=sdr,gamut_mapping=relative,knee_offset=0.5 --output-res 1920x1080 --trim Trim(756,29703)++Trim(33901,62372)++Trim(65969,91862)++Trim(95461,97258) -i [入力ts] -o [出力mp4]
Win11 i9 12900K + RTX4080で126fps。にしても動きが多いせいか、ファイルサイズがでかい…。
NVENCでフィルタ処理をしてからswエンコード
というわけでhwエンコードならだいぶ速度が出そうなのだけど、やっぱり圧縮率重視したいと思ったので、svt-av1でエンコードすることに。
フィルタ処理はそのままにして、NVEncからは1920x1080 10bitのHEVC losslessで出してffmpegに渡し、svt-av1でエンコードしてみた。
x64\NVEncC64.exe --log-level core_progress=error -u quality -c hevc --output-depth 10 --lossless --audio-copy --colormatrix auto --colorprim auto --transfer auto --vpp-decimate cycle=5,drop=3,blockx=16,blocky=16 --vpp-libplacebo-tonemapping src_csp=hlg,dst_csp=sdr,gamut_mapping=relative,knee_offset=0.5 --output-res 1920x1080 --trim Trim(756,29703)++Trim(33901,62372)++Trim(65969,91862)++Trim(95461,97258) -i [入力ts] -f mpegts -o - | x64\ffmpeg -hide_banner -y -f mpegts -c:v hevc_cuvid -i - -c:v libsvtav1 -preset 4 -crf 29 -g 240 -svtav1-params tune=0:enable-variance-boost=1:variance-octile=4:scd=1:lookahead=120:enable-tf=0:enable-overlays=1 -c:a copy [出力mp4]
これでも Win11 i9 12900K + RTX4080で18.1fps出たので、個人的にはこっちでよさそう。