(2019.03.16)RTX2060買ってやる気満々の(ハイになってる)うちに、いろいろエンコードテストしてみた数値メモ。フィルタの再現性を考察(実写)

今回も思い込みと偏見で、エンコードのお勉強!エンコード楽しんでか~い!いぇ~い!
ってな感じで、このシリーズの最終回ってことで。

Cパターン。「フィルタ後のデータとエンコード結果からSSIM値を計算し比較する。」
(フィルタかけたのでソースと比較する意味がないという提で)

エンコーダーにわたる前のデータyuv420p10をlossless変換した動画と比較しています。
(–lossless指定がないものは近い設定でやってるつもり)
各エンコーダー毎のlosslessに近いものと比較するようにしていますが、QSV-H.265のハードエンコード対応してない環境など、一部それに近いものを偏見で忖度して選んで使ってます。

映像業界にいたこともない、素人のおっさんが初めて引っ張ってきたSSIM比較なので生ぬるく見守って、反論がある方は、ぜひデータをさらしてましなグラフを出してください!ヽ(*^。^*)ノ
低ビットレートの比較がないんで自分でわしゃわしゃもんでみただけですので、データの信頼性は低いです!

ツールやエンコーダーを公開している方に迷惑がかかるといけないので、ここで見たことは内密に
初めてのエクセルの色データの設定がうまくいかないので、投げました!個人的には色よりも曲線の美しさがあればそれでいいので!
まだ、艶めかしく妖艶でエロチックに見えるところまでは見えていませんので、さらに奥の世界があるかと・・・

◆本当は、一つにまとめちゃいけない、今回の8bitエンコードデータ
各エンコーダーで8bitのlosslessエンコードで動画を作った時に、SSIM値が一致していないので、前提となるデータが10bit→8bit変換でSSIM値が有利になっているかもしれないデータがあるということで、8bitのデータは10bitと比較用参考値としてください( ^.^)( -.-)( _ _)
例:QSVのavc8bit と x264veryfastのグラフだけを見て、QSVいけてる!とか思わないでいただきたいという注意です

※フィルタが10bit出力したデータは、10bitエンコードした方が、よりフィルタのデータを正しく保管できるということです。
と、書いておいてなんですが、たいていは再生時に捨てられるデータですが…
データをフルレンジ保管してないので、上下のデータが切り捨てられていて、本末転倒という気がしないでもないですけどね!(^◇^;
これもまたおっさんの懸念って言うだけで、実装で影響ないよって言われそうですけど…いずれ検証したいですね!

◆まずは今までのような曲線グラフの表を。
エンコーダー+ソフト&ハードによって設定値と圧縮率は全然違うところにバランスが向かいますので、自分の使っているエンコーダーの癖を調べておくのはいいことだと思います。
グラフ曲線が交わっている場合はエンコーダーが違っても近辺の品質値でほぼ同じSSIM値の動画を狙えるということです。
(同じ動画になるというわけではありませんが^^;)
HW支援速度やツールによって使い分ける時にオカルト思い込みよりはましな、似通った品質に一つの指針となると思います。


一つにまとめようとしてあきらめる。整理整頓能力は私にはない… 色調整してないんで、ごちゃごちゃの上見難い(^◇^;

細かいところ見ていきましょ。

x265ソフトエンコードでオプションを少し変えた見た比較。
低ビットレートは誤差の範囲(実際見たらわからない範囲)に収束しているので、好きなオプションを使っていいと思われます。

のっぺりしたアニメなどでブロックごとの直線がずれるのをごまかしてくれるRDO(–rd 3)とか、実写やグラデが多いところではあまり効果が薄いようで、見た目よりはSSIM値に変化がない。
まぁ適応されている部分が全体の数%にもいかない範囲にかかっていると思いますので、当たり前なんですが(^◇^;


10bitと8bitを比べる図。うちでよく使いそうな自分のメモ。
おま環オプションとQP値の参考グラフ。10bitデータなら8bitより10bitの方がよい再現性のSSIM値を出しているということ。

各エンコーダー比較で、10bit→8bit変換が同じデータになっていないようなので、QSV8bitがx264よりいいデータに見えますが、ウソです。


ついついSSIM値に目が行きがちですが、Videoビットレートの「2,000 kbps」と「4,000 kbps」ではファイルサイズがほぼ倍になるということはわすれないでね!^^;
(元ファイル video bit rate : 7,450 kb/s)

各エンコーダーが10ビット入力に対応しているので、10bitエンコードを避ける理由ががっつり減っていますが、現行品でも古いコンセプトのソフトでは10bit処理ができなかったりものすごく遅かったりするので、編集環境や、再生環境によってはH.264の8bitmainプロファイルという最低ラインに落ち着くのかもしれません。

そんな環境と下位互換考えていたら、H.265の10bitとかこれからのHDRエンコードについていけなくなるよ。
H.264までで、一つの時代が終わって、4K8KのHDRをどうするかって言う別の時代が始まって模索している段階です。
タダでも日本は遅れているのに、一つの物差しで測ろうとして足を引っ張る人は老害と言われても仕方がない!と、おっさんは思い立ったので、なるべく未来を見ていこうと思います!

高ビット出力してくれるフィルタの再現性は高ビットが必要なので、原状圧倒的に10bitエンコードの方が8bitエンコードが優れていると言わざるを得ない。
32bitOSから64bitOSに代わるようなものなので、時代の流れを受け止めましょう。

◆ なんとなく元データの前にまた注意事項。
品質指定(QPとかCRFとかICQとかいろいろ)と、ビットレート=圧縮率がきれいにそろっているわけではないので、グラフ曲線の方で見た方がミスリードを起こさないと思います。
ここまでの表で、指定したCRFの値だけでファイルが小さいとか、SSIM値が高いとか何の意味もない恥ずかしいことに(^◇^;

かといって、QP値やCRF値をしないとデフォルト値が使われるので、ソフトエンコードでavc時のデフォルトは23、hevc時のデフォルトは28となりますので、CRF値を指定しない場合、ファイルがでかい!縮まない!という落とし穴にはまるわけですね。
さらに、NVENCなどのハード支援使ったエンコードだとVBRの目標値となるので、数字だけ見るとCRFの設定値から4から6くらい大きい値を設定することになります。
(エンコーダーや圧縮方式・オプションが違うのに「同じ数字」を使うと、HWエンコードのではファイルサイズがでかくなります:罠)

もっと言えば、オリジナルパフォーマンス(プリセット)とオリジナル品質値(数値が大きいほどが質が良い)を使っているTVMW7などでは値の参考値も一切公開されていないので、オプション選択のデフォルトを基準値とするしかない訳で…エンコーダー切り替えても品質設定は同じ値だったと思う。
結果的にハードウェアエンコードは縮まないと思えるかも…これも調べてみたいところですね。実際使ってるツールなんで。

まぁ、この表への移植が間違っている可能性、比較サンプルやオプション設定など、比較以前の問題もあるかと・・・ヘ(゚∀゚ヘ)アヒャ

◆ グラフの元データ一覧。

hevc8bitには酷なlossless比較となりました。その割に大健闘です。


QSVもSkylake世代ということで、hevcに関しては最低限の実装となっています。六再生できるけど速度と画質には触れないでって言うレベル。avcの速度やSSIM値を見るといずれ改善されると思います。次世代IceLake以降は大きく手が入ることが報告されているようなので楽しみですね!


現代エンコードで基本中の基本。旧世代MPEG2と比べたら格段の良規格なんですが、MPEG2との互換部分も大きく低スペックCPUでもデコードできるように作られた時代の産物です。曲線グラフにすると各エンコーダーがクロスしている点が見えるので技術的にいい感じに煮詰まっている感じがします。ここから飛躍するようなことはあまり考えられないですね。


ソフトエンコーダーということもあり1月にメジャーバージョンが上がってプリセットが変わったり、まだまだ変化が大きい規格です。
いろいろ試したい、つつきたい、しゃぶりつくしたいといった規格ですね。
出力プロファイルやオプションをそろえることができなかったのが歯がゆいのですが、ビットレート比較はそれなりの数を上げれたのではないかと…

ハードウェアエンコードと比較するなら設計された時代と比べないといけないのが本音ですが・・・うちのQSVと比較するなら、4,5年前のバージョンとととと…気が遠くなるので、そんなデータがあったら面白いかもと思った理想の話。
その当時のx265と今のx265の比較ができない訳ではないですが、QSVがどのバージョンを拾ったのか調べるのも面倒だし、今後役に立つデータでもないので、やらないよっ!(逃げ!)

◆例:NVENC hevc lossless Encode
エンコーダオプション: -c hevc –profile main10 –lossless –lookahead 32 –level 5.1 –tier high –output-depth 10 -u quality

> “D:\Amatsukaze\(rigaya)NVEnc_4.32\NVEncC\x64\NVEncC64.exe” –colorprim bt709 –transfer bt709 –colormatrix bt709 -c hevc –profile main10 –lossless –lookahead 32 –level 5.1 –tier high –output-depth 10 -u quality -o “C:\Temp\amt9045883/v0-0-0.raw” –format raw –y4m -i –
> y4m format: YUV420p10 progressive 1440×1080 SAR 4:3 30000/1001fps

NVEncC (x64) 4.32 (r1006) by rigaya, Mar 4 2019 22:15:39 (VC 1900/Win/avx2)
OS Version Windows 10 x64 (17763)
CPU Intel Core i7-6700 @ 3.40GHz [TB: 3.88GHz] (4C/8T)
GPU #0: GeForce RTX 2060 (3840 cores, 1830 MHz)[PCIe3x16][419.35]
NVENC / CUDA NVENC API 9.0, CUDA 10.1, schedule mode: auto
Input Buffers CUDA, 44 frames
Input Info y4m(yv12(10bit))->p010 [AVX2], 1440×1080, 30000/1001 fps
Vpp Filters copyHtoD
Output Info H.265/HEVC main10 @ Level unknown
1440x1080p 4:3 29.970fps (30000/1001fps)
Encoder Preset Unknown
Rate Control CQP I:0 P:0 B:0 (lossless)
Lookahead on, 32 frames, Adaptive I, B Insert
GOP length 300 frames
B frames 3 frames [ref mode: disabled]
Ref frames 3 frames, LTR: off
AQ off
CU max / min auto / auto
Others mv:auto

◆例:NVENC hevc lossless mp4
Video
ID : 1
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : Main 10@L5.1@High
Codec ID : hvc1
Codec ID/Info : High Efficiency Video Coding
Duration : 10 min 0 s
Bit rate : 246 Mb/s
Width : 1 440 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 (30000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 10 bits
Bits/(Pixel*Frame) : 5.285
Stream size : 17.2 GiB (100%)
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Codec configuration box : hvcC

◆例:NVENC avc lossless Encode
エンコーダオプション: –lossless

> “D:\Amatsukaze\(rigaya)NVEnc_4.32\NVEncC\x64\NVEncC64.exe” –colorprim bt709 –transfer bt709 –colormatrix bt709 –lossless -o “C:\Temp\amt9043615/v0-0-0.raw” –format raw –y4m -i –
> y4m format: YUV420p10 progressive 1440×1080 SAR 4:3 30000/1001fps

NVEncC (x64) 4.32 (r1006) by rigaya, Mar 4 2019 22:15:39 (VC 1900/Win/avx2)
OS Version Windows 10 x64 (17763)
CPU Intel Core i7-6700 @ 3.40GHz [TB: 3.98GHz] (4C/8T)
GPU #0: GeForce RTX 2060 (3840 cores, 1830 MHz)[PCIe3x16][419.35]
NVENC / CUDA NVENC API 9.0, CUDA 10.1, schedule mode: auto
Input Buffers CUDA, 36 frames
Input Info y4m(yv12(10bit))->p010 [AVX2], 1440×1080, 30000/1001 fps
Vpp Filters copyHtoD
cspconv(p010 -> nv12)
Output Info H.264/AVC Unknown @ Level auto
1440x1080p 4:3 29.970fps (30000/1001fps)
Encoder Preset Unknown
Rate Control CQP I:0 P:0 B:0 (lossless)
Lookahead off
GOP length 300 frames
B frames 3 frames [ref mode: disabled]
Ref frames 3 frames, LTR: off
AQ off
Others mv:auto cabac deblock adapt-transform:auto bdirect:auto

◆例:NVENC avc lossless mp4
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High 4:4:4 Predictive@L4
Format settings : CABAC / 3 Ref Frames
Format settings, CABAC : Yes
Format settings, ReFrames : 3 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 10 min 0 s
Bit rate : 127 Mb/s
Width : 1 440 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 (30000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 2.720
Stream size : 8.86 GiB (100%)
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Codec configuration box : avcC

—-
疑問というか愚痴というか…自分への言い訳?- 持ってる人が自分で調べればいいよねw

このサイトでは古いものとの互換はあまり考えてません。Video for Windows読めないとか言わないで!w
自分の保管している規格のサポートが終了するとか、その当時の再生環境保管していないとかいろいろあるとは思うけど、HWエンコードかましてバックアップ保管するくらいの気持ちで。
ちゃんと管理していないものに愛着とかウソっぽいからね。ただの未練とかいいがかり。
他人には関係ないので、自腹で出費して対応部類のもの。

20年たって建築物の瑕疵が在るとか裁判しても大赤字だよ?

Android4以前のHW再生支援のない環境がうちではなくなったので、必要が出たら再エンコードすればいいという結論です。
(断捨離。全部処分した!すっきりした!)

今までかかったコストより、これからかかるコストを考えよう。思い出の品は残してもいいと思うけど、電化製品を思い出の品にするのは・・・やめておいた方が・・・コレクターだけ。
ツボは磨けばいいけど、電化製品はさびると最悪家や財産を灰にしますよ?過去の思い出どころか、これからの人生も灰になるよ!’`,、(´▽`) ‘`,、

再生環境で制限されるって言うんは、初期BDまでしか対応できていないカーナビくらいしか思いつかない…買い替えましょ?
スマホに動画入れて外部入力(数年前の機種でもWindowsと同等の規格に対応している)している人は見たことあるけど、小さいモニタや車で凝った保存データを再生って言う使い方がわからないので、いいアイデアが浮かばない。
今の環境では、ほぼコピーする時間にちょい足せばでh.264エンコードできちゃうんで、再エンコでもSD42分なら2分かからないと思うし、保存用と再生用は分ければいいんではないかと思う。
何か上映会したいなら別だろうけれど、それこそノートPCをつなげばいいような…
容量気にする時代でもないと思うしなぁ^^; MicroSDで1TB時代だし(^◇^;

10bitエンコードした動画を再エンコードした動画の比較もやってみればいいのか…そもそも俺がやる必要があるんだろうか?(^◇^;
議論に興味もなければ参加する気も否定する気がないけど、5chでよく持論の水掛け論やってるよね…同じネタ何度も(笑)
ほかの役に立ちそうな面白いネタが埋もれるから、過去ログ読むかまとめサイト作ればいいのにねw