(ボツネタ)part4 NVEncCだけで爆速VFRエンコード!最後に残っている修正されそうなShadowPlayの色空間(ColorSpace)bt.601をbt.709に変換するときのあれやこれや。

日記 > PC

[VFRの技術検証です。すべての動画にVFR化を薦めるものではございませんm(__)m]
待望のNVEncC 5.21以降のみでお手軽VFRエンコード。NVEncCのみで完結させるために残っているのは色空間のごたごた。
FFMpegのMatrix変換もうまくできていないのにNVEncCだけで完結させようという甘い妄想を描いています。

いろいろ問題があるようなので修正中ですm(__)m
それは変換されてないだけという突込みが来たので、そういわれるとそうなのかもしれないという感じです。
ちと勉強してきます(^◇^;


以下勉強中のメモ。メモです。

ソースの再現性に合わせたい時の設定を模索

ここから先の文章は、ソース動画のbt.601の再生画面の静止画の再現性が高いものがベストだと思って書かれています。

色空間や色変換のフォーマット要素。
color_range、color_space、color_primaries、color_trc

—-下記FFMpegドキュメントより抜粋
Q.FFmpegはどのように色空間を識別するのですか?
A.FFmpeg では、色空間はピクセル形式で表されます。
実際には、あなたが気にするものは次のとおりです。

ピクセル バッファに RGB、YUV、またはその他の種類の信号、およびビット深度が含まれているかどうか。
シグナルが全範囲であるか制限範囲であるか。(YUVのみ、他のタイプの信号の問題はほとんどありません。(注:”全範囲”は YUV コンポーネント値が 0 ~ 255 の範囲にあるのに対し、「制限範囲」は 16 ~ 235 の値を持ちます。
YUV と RGB の間の変換行列。
RGB から線形 RGB 信号への線形化関数。
線形化された RGB とデバイスに依存しない XYZ 色空間の間の変換行列。

FFmpeg は、AVFrame構造体にこれらのプロパティをすべて格納します。

AVFrame-> 形式の形式 (タイプとビット深度)
AVFrame-> の信号範囲color_range
AvFrame->カラースペースにおける YUV/RGB 変換行列
AVFrame-> の線形化関数 (別名変換特性)color_trc
RGB/XYZ マトリックス (AVFrame->color_primaries
—-
bt.709(高精細 HD)以前のアナログ時代の標準画質向けデータはいろいろ混在しているという事です(^◇^;
その先にはbt.2020(超高精細 UHD)がある。

再生環境によりbt.709より前はより同じ際限がされにくいと感じるので、bt.709に統一したいところで…
DXAV2を使う使わない。NVDEC/QSVの支援で影響が出る。CPU再生と違いがある…

テストしてみる。
あー、でました(´・ω・`)

※「colormatrix」が「BT.709」となっているのに、デコーダ側が無視して強制的に「BT.601」として読み込んだりする場合もあるらしいです。HW支援によって動作が変わることもあるらしい。という書き込みを散見。
゛(ノ><)ノ ヒィ 理解不能。頭冷やしてきます(^◇^; https://trac.ffmpeg.org/wiki/colorspace

※Video filter colorspace, colormatrix have the following relationship:の下に結構重要なことが…
colormatrixは使わない方が良いのかもって不安になる(;^_^A アセアセ・・・


それは変換されてないだけの検証…の前に
という突込みが来たので、頭を抱えてみた。

↓こりゃいかんね(^◇^;

こんな変なことになるなら、いじらないほうがスマート。色は変だけど(^◇^;

変換するときは全部変換するのが正しい気がしているのですが…
コントラストが上がって全体的に黒よりで、髪の毛がつぶれちゃう
ガンマ値下げたような画像に^^;
[FFMpeg -vf colorspace=all=bt709]

set BEFORE=%~1
set FILENAME=%~n1
set EXTENSION=%~x1
set AFTER=%FILENAME%_mpd%EXTENSION%
set LOGFILE=%FILENAME%.log

ffmpeg -hwaccel cuda -i “%BEFORE%” -c:v hevc_nvenc -preset:v p7 -profile:v main10 -vsync vfr -vf mpdecimate,colorspace=all=bt709,unsharp=lx=5:ly=5:la=0.6:cx=5:cy=5:ca=0:opencl=1 -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 p010le -codec:a copy “%AFTER%” 2>”%LOGFILE%”

どうして色が変なのかと言われると一概に言えないので技術資料を…(^◇^;
ガンマ補正とか変換式と補正とか、あーおくがふい奥が深い。さっぱり入ってこない(笑)

映像データの取り扱いに関する技術セミナーに向けた,教材作成並びに講師派遣委託事業
「映画・映像データの取り扱い、仕組みと実際」

https://www.momat.go.jp/fc/wp-content/uploads/sites/5/2017/03/a0c8088fdf09bbd4ba1436b1a317da52.pdf

言葉でbt.601→bt709変換の話は面倒なので、EIZOの【色再現域比較】 のグラフをお借りしよう

https://www.eizo.co.jp/company/news/2009/files/NR09-003.pdf

[昔扱っていたことがあるモニタより]


黄色い三角形(bt.601) → 水色の三角形(bt.709)
黄色が緑寄りにに、オレンジが赤寄りに拡張される感じ?

拡張されたらそりゃ色が変わるよね?
再現性って何という振出しにもどる。←今ここ。

変換された後の映像が正しいのかどうかの判断はどうするんだろうという話(;^_^A アセアセ・・・
まぁとりあえず、フラグだけ立ててウェーイするのは間違ったやり方みたいだ。
無視されてるみたいだよ(^◇^;

↓どや顔で書いた奴を直さねば(・・ゞポリポリ↓



■ ShadowPlayの色空間(ColorSpace)bt.601をbt.709に

余計なことはするなと。かっこつけるなと。
TVのTSをエンコードした時のようにbt.709で「3つ」そろえようとするなという事でした。

※「3つ」というのはこれっすね↓

Color primaries : BT.601 NTSC
Transfer characteristics : BT.470 System M
Matrix coefficients : BT.601

・CommandLine

D:\Amatsukaze\_bin\NVEncC_5.21_x64\NVEncC64.exe -c hevc –profile main10 –output-depth 10 –bref-mode each –ref 16 –avhw –input-analyze 16 –avsync vfr –aq –aq-temporal –aq-strength 0 –vbrhq 0 –vbr-quality 28 –lookahead 32 –gop-len 600 –bframes 4 –vpp-mpdecimate –vpp-colorspace matrix=auto:bt709 –vpp-unsharp radius=3,weight=0.5,threshold=10 –colormatrix auto –colorprim auto –transfer auto –audio-copy -i “%~1” -o “%~n1_q28_60fps-vfr.mp4″ 2>”%~n1_q28_60fps-vfr.log”

・速度(24分FHD実写)

上出来ですねヽ(*^。^*)ノ
FFMpegでほぼ同じ処理をしてた時は約12分でしたから( ̄ー ̄)ニヤリ

Rigaya氏ありがとう!

■ 妥協の産物(^◇^;

・MediaInfo


※NVIDIA公式の修正案に上がっているので、そのうち何かしら変更があると思います。
PAL→NTSC とか言わないので、ShadowPlayがbt.709で録画できるオプションなんてつくとありがたいですね。
デフォルトを変えると几帳面で神経質なヲタ世界がパニックに陥りそうですが…私もその一人(^◇^;

[Please change shadowplays SDR video recording from BT 601 to BT 709 – videos are too dark after YT p]

{{MetaTags.og.title}}
{{MetaTags.og.description}}
■ 再生確認



評価はいろいろありますが「MediaPlayerClassic-HomeCinema – Standard」使ってます。
同じフレーム番号のフレームを静止画にできれば何でも良いですがな^^;

Download K-Lite Codec Pack
Download links for the K-Lite Codec Pack. A free software bundle for high quality audio and video playback.

動画のmpdecimateのかかった同一フレームを比較して、色合いが同じになるレベルに合わせています。
(静止画をパタパタ切り替えて、TMSR6で書き出し静止画を保存したものと比較してます)
※再生環境、オプション、HW支援により変わります。シェーダーやフィルタも全部オフにしています。
合わせるというか、同じ設定のままテストしたという報告だけ^^;


DXVA 2.0の実装:ネイティブとコピーバックを詳しく知りたい方はこちらでも読んでください。

DirectX Video Acceleration - Wikipedia
■ 個人的に満足する結果にたどり着いたのでOK

今日も今日とて、水戸黄門や某探偵少年の様にどこへ行っても事件が起こるというか、AVerMediaの外付録画装置のbt.709のフルレンジ問題からShadowPlayのbt.601問題まで幅広く地雷を踏んでおります。
途中試行錯誤の憶測と妄想の為間違った情報もあると思いますので、各自自分の環境に会った設定を見つけられるといいですね!

タイトルとURLをコピーしました