Amatsukaze 改造版 0.9.5.4

- QSVEnc/NVEnc用に「CM品質オフセット」を追加。
本機能使用時には、QSVEnc 7.54NVEnc 7.37への更新が必要です。

- QSVEncでもCMビットレート倍率に対応。


Amatsukazeでは、出力選択を「通常」にしてCMをカットしない場合に、CM部分のビットレートを下げてファイルサイズをより小さくする「CMビットレート倍率」という機能がある。

ただ、これは基本的にはx264/x265用の機能になっていて、ビットレート倍率を指定する機能のないハードウェアエンコードの場合の対応は限定的だった。

具体的には、QSVEnc/VCEEncは非対応、NVEncの場合は自動ビットレート指定の場合にだけ使えるようになっていた。

個人的には自動ビットレート指定はあまり使わず、NVEncの--qvbr、QSVEncの--icqなどの品質指定系のオプションをよく使っている。なので、これを使うときにもCM部分のビットレートを下げてエンコードしたいな、ということで、「CM品質オフセット」というオプションを追加した。(NVEncの "--qvbr x" は "--vbr 0 --vbr-quality x" の省略系)

どういう動作になるかというと、例えばQSVEncで--icq 28、CM品質オフセットを8と指定すると、本編と判定された箇所はそのまま--icq 28、CMと判定された箇所は--icq 36でのエンコードになる。--icqは値が大きいほど高圧縮になるので、CM部分のサイズを圧縮することができた。

これは出力フォーマット「TS (replace)」のときに便利かなあと思っていて、tsreplaceを使うときはCMカットできないのだけど、この「CM品質オフセット」と組み合わせてよりサイズ圧縮ができて便利。

実際に下記設定で実行してみた。

入力: 約30分 2.10GB
設定: QSVEnc、tsreplace、KFM(VFR)、DecombUCF、デブロッキング
オプション: -c hevc --output-depth 10 --icq 28 -u best --gop-len 90 -b 3 --ref 4 --open-gop --i-adapt --b-adapt --b-pyramid --adapt-cqm --fade-detect

CM品質オフセットなし: 408MB
CM品質オフセットあり(+8): 322MB

ビットレートの分布を見るとこんな感じで、黄色く囲んだCMのところだけビットレートが低下して、ほかの部分(本編)では従来のままというエンコードができている。

amatsukaze_dynamic_rc_20231119.png

まあ、本編の圧縮率の高めな番組を選んでテストしているのもあるけど、それなりに効果がありそう。



ダウンロード>>


スポンサーサイト



コメントの投稿

非公開コメント

No title

いつも素晴らしい改良、ありがとうございます。

最近のNVEncの更新に--dynamic-rcが追加されていたので、CM品質オフセットに使えると思っておりましたら、まさにそのためだったのですね。ありがとうございます。

もう一点、今回と同じ機能で対応できると思われる、「x265VFR時間レート」にも、ぜひ対応をお願いいたします。60FPSと30FPSが混在するVFR動画において、ビットレートを一定に保つようにしてくれる機能です。
自分は、60iのドラマと、30Pのドラマで、同じようなビットレートになるように使用していました。今回、x265からNVEncに移行して、この機能が使えないことを残念に思っていました。
もしお時間がありましたら、どうかよろしくお願いいたします。

Re: No title

コメントありがとうございます。おっしゃる通り--dynamic-rcはAmatsukazeで活用するために追加した機能です。


VFR動画に対するビットレートの安定化ですが、一応今回の更新でブロックごとに--dynamic-rcを使ってフレームレートを考慮したビットレートになるようにはなっているはずです。「エンコーダ追加オプション」でvbr系のビットレート指定を行うとその値になるよう、VFRを考慮して--dynamic-rcの指定が自動的に行われます。

ただ、NVEnc/QSVEncはビットレートが変動しやすく、x264/x265ほどはぴったり指定通りにはならないようです。

No title

rigaya様、ご回答、ありがとうございます。

やはり、すでに対応してくださっていたのですね。ありがとうございます。
ただ、私の指定の仕方が悪いようで、ログを見ても--dynamic-rcが使われていないようです。

KFMでインターレース処理し、NVENCCのAV1出力をQVBRで出力しています。以下のようなログになります。

2023-11-21 15:42:17 "C:/Tool_Program/Video/Amatsukaze/exe_files/NVEnc/NVEncC64.exe" --colorprim bt709 --transfer bt709 --colormatrix bt709 -c av1 --qvbr 38 --preset quality --multipass 2pass-full --lookahead 32 --gop-len auto --weightp --bref-mode each --output-depth 10 --frames 159152 -o "W:/Amatsukaze_Temp/amt6049989/v0-1-0-main.raw" --output-format mp4 --y4m -i - --tcfile-in "W:/Amatsukaze_Temp/amt6049989/v0-1-0-main.avstmp.timecode.txt" --timebase 1001/240000

以前、x265で出力していた際は、以下のように、--zonesでフレームごとの品質を変化を付けられていたようでした。

AMT [info] "C:/Tool_Program/Video/Amatsukaze/exe_files/x265_3.5+109_x64.exe" --colorprim bt709 --transfer bt709 --colormatrix bt709 -P main10 --crf 24 --asm avx512 --zones 0,3111,b=1/3112,4159,b=1.26/4160,4791,b=1.13/4792,24879,b=1/24880,37735,b=1/37736,37999,b=1.25/38000,61079,b=1.01/61080,61215,b=1.35/61216,76783,b=1/76784,77159,b=1.25/77160,149631,b=1/149632,149759,b=1.24/149760,152591,b=1.01/152592,186047,b=1/186048,186519,b=1.16/186520,191135,b=1/191136,191183,b=1.34/191184,192927,b=1/192928,197071,b=1.09/197072,197527,b=1.18/197528,197919,b=1.07/197920,197991,b=1.38/197992,200687,b=1/200688,200863,b=1.19/200864,208903,b=1/208904,210151,b=1.25/210152,222967,b=1/222968,223887,b=1.26/223888,224039,b=1.37/224040,227079,b=1.07/227080,234023,b=1/234024,235119,b=1.04/235120,236135,b=1.18/236136,257663,b=1/257664,281479,b=1.01/281480,281759,b=1.13/281760,287703,b=1/287704,287799,b=1.24/287800,315407,b=1/315408,315807,b=1.24/315808,317719,b=1.01/317720,317855,b=1.25/317856,330055,b=1.01/330056,330119,b=1.24/330120,339071,b=1.01/339072,339303,b=1.24/339304,344423,b=1/344424,353047,b=1.03/353048,353159,b=1.25/353160,353559,b=1.03/353560,354359,b=1.15/354360,360791,b=1.01/360792,361240,b=1.36 --frames 361241 -o "W:/Amatsukaze_Temp/amt1669990/v0-0-0-main.raw" --no-opt-qp-pps --no-opt-ref-list-length-pps --y4m --input -

おそらく、私の設定ミスだと思うのですが、お気づきでしたらお教えください。

勝手な要望ばかりですみません。今後も、どうかよろしくお願いいたします。

Re: No title

なるほど、そういうことでしたか…。

ご利用のNVEncのqvbrをはじめとするhwエンコードの固定品質系オプションは、--dynamic-rcを使用してもx264/x265と異なりビットレートの「倍率」指定が残念ながら仕様上行うことができません。そのため、VFRによる倍率指定は使用できません(「CM品質オフセット」のみ可能)

hwエンコードであっても、ビットレート指定系オプション(vbr等)であれば可能なのですが、申し訳ありませんが今回のようにqvbrを使用されている場合には利用できません。

vbrの場合、例えば エンコード追加オプションを "--vbr 4000" のようにしますと、

--dynamic-rc 0:2639,vbr=5235 --dynamic-rc 2640:3855,vbr=4484 --dynamic-rc 3856:10391,vbr=5267 --dynamic-rc 10392:16151,vbr=5415 --dynamic-rc 16152:16351,vbr=4150 --dynamic-rc 16352:19319,vbr=5372 --dynamic-rc 19320:19431,vbr=4027 --dynamic-rc 19432:22743,vbr=5478 --dynamic-rc 22744:23751,vbr=4657 --dynamic-rc 23752:25855,vbr=5319 --dynamic-rc 25856:29543,vbr=5039 --dynamic-rc 29544:35903,vbr=5482 --dynamic-rc 35904:36327,vbr=4013 --dynamic-rc 36328:41927,vbr=5329 --dynamic-rc 41928:42935,vbr=4232 --dynamic-rc 42936:49352,vbr=4918

のように区間ごとにビットレート指定がなされることを確認しています。ただ、ここでエンコーダの仕様上、「倍率」は指定できずビットレートの「実数値」の指定とする必要があるので、ビットレートがエンコード前には不明な固定品質系のqvbrとは組み合わせられない、ということになってしまっています。

No title

rigaya様、ご回答、ありがとうございます。

やはり私の理解不足だったのですね。お手数をおかけしました。固定品質をやめて設定を詰めてみます。

いつも迅速で適切な対応、心から感謝します。今後も、どうかよろしくお願いいたします。

No title

非常に長いコマンドラインになってしまう場合に、エラーでタスクが停止してしまう場合があるようです。いずれもcudaでKFMかつVFRにて出力しており、dynamic-rcオプションが少数で済んでいる他の大半のタスクは正常に終了します。(Amatsukaze 0.9.5.4 / NVEncC 7.37)
該当部分のログは以下の通りです。
今後の何かしらのご参考になればと思いまして、書き残しました。

2023-11-** **:**:** "C:/tools/NVEncC64.exe" --colorprim bt709 --transfer bt709 --colormatrix bt709 --avhw -c hevc --vbr 2000 --max-bitrate 3000 --multipass 2pass-full --lookahead 32 --bref-mode each --weightp --output-depth 10 --profile main10 -b 3 --gop-len 125 --dynamic-rc 0:63,vbr=1316 --dynamic-rc 64:111,vbr=2114 --dynamic-rc 112:247,vbr=2530 --dynamic-rc 248:279,vbr=2062 --dynamic-rc 280:287,vbr=2751 --dynamic-rc 288:343,vbr=2000 --dynamic-rc 344:359,vbr=2313 --dynamic-rc 360:399,vbr=2000 --dynamic-rc 400:455,vbr=2259
====中略 dynamic-rc が1000個ほどつづく====
"C:/Amatsukaze/Temp/amt6502545/v0-0-0.raw" --output-format mp4 --y4m -i - --tcfile-in "C:/Amatsukaze/Temp/amt6502545/v0-0-0.avstmp.timecode.txt" --timebase 1001/120000
AMT [error] Exception thrown at ProcessThread.cpp:44
Message: プロセス起動に失敗。exeのパスを確認してください。


Re: No title

なるほど、そんなに長くなることがあるのですね。

Windowsだとコマンドラインの上限長さというのがあるようで、8192文字あるいは32767文字らしいいのですが、たしかに1000個も--dynamic-rcがあると余裕で(?)オーバーしてしまいますね。

将来的には、--dynamic-rcをファイルで受け取るオプションをNVEncに新設して、ファイルから読ませるようにしないとだめかもしれません。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

tsreplace
- tsの映像のみを置き換えて圧縮

rkmppenc
- Rockchip系SoCのhwエンコーダ

fawutil
- FAW(FakeAACWave)⇔aac変換
- 二重音声の取り扱いにも対応

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR