NVEnc 7.48

- NVEnc 7.45から--vpp-resize nvvfx-superres使用時に意図しないリサイズが行われることがあるのを修正。



NVEncの初版、0.00の公開日は2014/03/28だったらしく、公開から10年経ちました。

当時はAviutlの出力プラグインで、機能としてはエンコードだけでしたが、思えばいろいろと機能追加をして移り変わってきました。

1.00 … コマンドライン版追加、HEVCエンコード対応
2.00 … hwデコード対応
2.01 … mux機能追加
2.09 … 10bit対応
3.00 … CUDAフィルタ追加
4.00 … Aviutlプラグインからエンコーダを別プロセスに分離
5.01 … Linux対応
6.00 … Aviutlプラグインのインストール方法を簡単に
7.00 … AV1エンコード対応

そのほか、コードの拡張に限界を感じた時に一気にコード整理したりみたいなこともしたりしました。基本はなるべく効率よくさくさく実装できるよう進めたいなあというのがあるので、あまりコードを複雑にしないように整理したり、あるいはもう複雑になるような機能は追求しないようにして進めて、基本的なほしい機能はおさえられるようになっているのかなあと思います。

多くの方にコメント・要望などいただき、ありがとうございました。

これからもまったり更新を続けたいと思います。



※NVEnc 6.00から導入方法が変更されていますのでご注意ください。
※Aviutl向けには、Aviutl_NVEnc_7.xx.zip をダウンロードしてください。
ダウンロード>>

NVEncの導入
NVEncCオプション一覧>


スポンサーサイト



コメントの投稿

非公開コメント

No title

No title

10年もの長い間更新ありがとうございます。

Re: No title

なんでというのは、具体的にはどういったことでしょうか。

NVEncの表示についてでしたら、手元では再現できておらず、原因は不明です。環境に依存する問題かもしれません。

幸い判別は可能と思いますので、すみませんが現状でお使いください。

Re: No title

こちらこそコメントありがとうございます。

引き続き少しずつ更新していこうと思います!

Aviutl経由での--output-resで負数指定時のリサイズについて

Rigaya様
標記の件について質問します。

1440x1080,sar4:3,dar16:9のtsファイルをソースとしてAviutl経由で
960x720,sar4:3,dar16:9のmp4にエンコードしたかった(つまり単純に
縦横2/3にしたかった)のですが、GUIから以下の設定をすると、
720x720,sar4:3の動画となってしまいました。

アスペクト比 SAR比を指定 4:3
リサイズ -4x720

以下にログを転載します。

----------------------------------------------------------------------------------------------

auo [info]: NVENCとして "H:\aviutl\aviutl_TEST\exe_files\NVEncC\x64\NVEncC64.exe" を使用します。
auo [info]: NVEnc options...
-d 0 -c hevc -u quality --interlace tff --cqp 20:23:25 --multipass 2pass-full --qp-init 20:23:25 --lookahead 32 --gop-len auto --bref-mode each --weightp --aq --aq-temporal --aq-strength 7 --sar 4:3 --profile main10 --output-depth 10 --vpp-yadif --output-res -4x720 --vpp-resize auto -o "test3.mp4" --sm --parent-pid 00002704 -i -
auo [info]: Convert yc48 -> p010 [AVX2]
weighted prediction with B frames unsupported.
NVEncC (x64) 7.48 (r2793) by rigaya, Mar 28 2024 11:43:50 (VC 1929/Win)
OS Version Windows 10 x64 (19045) [UTF-8]
CPU Intel Core i5-8500 @ 3.00GHz [TB: 4.01GHz] (6C/6T)
GPU #0: NVIDIA GeForce GTX 1660 (1408 cores, 1830 MHz)[PCIe3x16][551.23]
NVENC / CUDA NVENC API 12.1, CUDA 12.4, schedule mode: auto
Input Buffers CUDA, 44 frames
Input Info sm(p010)->p010 [AVX2], 1440x1080, 30000/1001 fps
Vpp Filters copyHtoD
cspconv(p010 -> yv12(16bit))
yadif: mode auto
resize(bicubic): 1440x1080 -> 720x720
cspconv(yv12(16bit) -> p010)
Output Info H.265/HEVC main10 @ Level auto
720x720p 4:3 29.970fps (30000/1001fps)
avwriter: hevc => mp4



MediaInfoで見てみるとdarも4:3となっていて、再生してみると、
やはりというか横方向に圧縮された4:3の比率で表示されます。

で、ログの
resize(bicubic): 1440x1080 -> 720x720

で、どうして横720という値が出てきたのか考えてみたのですが、
どうにも見当がつきません。
一応手掛かりとしての数字はSARの4:3という数字と縦の倍率の
720/1080=2/3で、これらを使って
1440*2/3*3/4=1440/2=720
という算出はできますが、この計算式の根拠がよくわからないの
です。

今まではsar 1:1のケースでばかり負数指定を使っていたので、
今回sar 4:3で使ってみて初めてこういう結果になることを知り
ました。

また、テストデータとして敢えてイレギュラーな値を与えて
みました。
aviutlで1404×1080にcropしたデータを、同じく
sar 4:3
output-res -4x720
でエンコードすると、やはり1404*2/3=936(これは4の倍数)になる
と考えていたのが、結果は以下のようになります。

auo [info]: video: 0:03:00.013 30000/1001(29.970) fps
auo [info]: NVENCとして "H:\aviutl\aviutl_TEST\exe_files\NVEncC\x64\NVEncC64.exe" を使用します。
auo [info]: NVEnc options...
-d 0 -c hevc -u quality --interlace tff --output-res -4x720 --vbr-quality 29.00 --cqp 20:23:25 --multipass 2pass-full --qp-init 20:23:25 --lookahead 32 --gop-len auto --bref-mode each --weightp --aq --aq-temporal --aq-strength 7 --sar 4:3 --profile main10 --output-depth 10 --vpp-yadif -o "I:\BOSS/BOSS 2nd\test9.0.mp4" --sm --parent-pid 00001f5c -i -
auo [info]: Convert yc48 -> p010 [AVX2]
weighted prediction with B frames unsupported.
NVEncC (x64) 7.48 (r2793) by rigaya, Mar 28 2024 11:43:50 (VC 1929/Win)
OS Version Windows 10 x64 (19045) [UTF-8]
CPU Intel Core i5-8500 @ 3.00GHz [TB: 3.92GHz] (6C/6T)
GPU #0: NVIDIA GeForce GTX 1660 (1408 cores, 1830 MHz)[PCIe3x16][551.23]
NVENC / CUDA NVENC API 12.1, CUDA 12.4, schedule mode: auto
Input Buffers CUDA, 44 frames
Input Info sm(p010)->p010 [AVX2], 1404x1080, 30000/1001 fps
Vpp Filters copyHtoD
cspconv(p010 -> yv12(16bit))
yadif: mode auto
resize(bicubic): 1404x1080 -> 704x720
cspconv(yv12(16bit) -> p010)
Output Info H.265/HEVC main10 @ Level auto
704x720p 939:704 29.970fps (30000/1001fps)
avwriter: hevc => mp4

Output Infoで見ると、1404*2/3*4/3=702のところ、4の倍数に調整
されて704となったように見えます。また、続く939:704はsarと思
われますが、設定の4:3が保存されずによくわからない数字になって
います。



ちなみに、同じソース(1440x1080,sar4:3,dar16:9のts)を、
ログから抽出した以下のオプションで実行したところ、
期待していた結果(960x720,sar4:3,dar16:9)のmp4が生成され、
再生時には横に4/3倍に伸長されてHD比率で再生出来ています。

NVEncC64.exe -d 0 -c hevc -u quality --interlace tff --output-res -4x720 --vbr-quality 29.00 --cqp 20:23:25 --multipass 2pass-full --qp-init 20:23:25 --lookahead 32 --gop-len auto --bref-mode each --weightp --aq --aq-temporal --aq-strength 7 --sar 4:3 --profile main10 --output-depth 10 --vpp-yadif -o "hoge.mp4" -i "hoge.ts"

また、横1404となるようにcropして

NVEncC64.exe -d 0 -c hevc -u quality --interlace tff --crop 36,0,0,0 --output-res -4x720 --vbr-quality 29.00 --cqp 20:23:25 --multipass 2pass-full --qp-init 20:23:25 --lookahead 32 --gop-len auto --bref-mode each --weightp --aq --aq-temporal --aq-strength 7 --sar 4:3 --profile main10 --output-depth 10 --vpp-yadif -o "hoge.mp4" -i "hoge.ts"

でエンコードした結果は、Output Infoの項で936x720 4:3と
なって、少なくともログ上ではsarが保持されていることが
確認できています。


aviutl経由だとsarもdarも元ファイルから参照することはでき
ないので、だからこそNVEnc.auoではアスペクト比設定の項目で
sarを指定する必要がある、ということだと思うのですが、
sarがどこでどのように使われているのか、今回の結果との
関連性がよくわかりません。
ログの最初にあるオプションリストがNVEncC64.exeにそのまま
送られているのであれば、aviutl経由でもコマンドライン直で
も同じ結果になると思うのですが…


ちなみに、見当違いかもしれませんが、入力アスペクト比を
維持しながらリサイズする、というoutput-resのパラメータで
ある preserve_aspect_ratio も、リサイズのチェックをoffに
した上でコマンド窓から
--output-res 360x720,preserve_aspect_ratio=increase
と入力して試してみましたが、やはり期待した結果ではなく、
Output Infoでは720x720 4:3と表示され、最初のsar 4:3
output-res -4x720 を指定した時と同じ結果になりました(こ
ちらもコマンドラインから直に指定した時は期待した通りの
960x720 4:3の結果でした)。


何をどう教えていただければ自分として納得できるのかうまく
説明が出来ないのでだらだらと事象ばかり挙げてしまい申し訳
ありませんが、理解まで少しお付き合い願えればと思います。


PS
ついでのようで恐縮ですが、私自身はNVEncとのお付き合いは
ほぼ5年といったところです。
Aviutl経由でばかり使っているので殆どのオプションは使わず
仕舞いで、これまでの報告も重箱の隅をつつくようなものばか
りで申し訳なくも思っていますが、いつも対応していただき
とても助かっています。
これからもよろしくお願いします。

Re: Aviutl経由での--output-resで負数指定時のリサイズについて

意図した動作をせず申し訳ありません。

ただ、イレギュラーな値はひとまず置いておくと、実は想定通りの動作となっており、いろいろ考えたのですが、すみませんが期待する動作はできないように思います。

まずはじめに、NVEncのSAR指定(--sar)は、基本的に出力ファイルのSAR比の指定である、という考え方がベースにあります。

この考え方に基づき、リサイズなしの場合はSAR比の上書き、負の値のリサイズを使用する場合には--sarで指定した値の出力ファイルを作成した時につじつまが合うようにアスペクト比を維持する計算が行われます。Aviutlの場合、入力ファイルからSAR比が取れないため、入力SARは1:1を仮定します

1440x1080 SAR=1:1は画面比4:3であるため、リサイズ後は720x720 SAR=4:3で画面比4:3を実現してしまった、ということになります。

ここで、入力SARが4:3であれば、所望の結果になるのですが、出力プラグインの特性上、入力SAR比を取得できず、このような結果となることは避けられません。

大変申し訳ありませんが、リサイズでは960x720、SAR=4:3指定をしていただきたく思います。


1404x1080(画面比1.3)の場合は、同様に計算してリサイズ後は702x720、これを4で丸めて704x720にリサイズしました。

ログ表示のSARは、もとのSARではなく、表示サイズとエンコードサイズの比から逆算するので、704x720に対して4:3だと表示サイズは939x720、ここからSAR比を逆算すると939:704になります。ただ、これはログ表示上そうなるというだけで、出力ファイルのほうはもとの4:3になっていると思います。

このあたりは端数が出ない限り正常に表示され、かつ出力ファイルには影響ないので、あまり気にしていません。(ログが手抜きと言えばそれはそうなのですが…)

No title

イレギュラーな値の時のログの件は今後改善したいと思います。

一方、本題のリサイズの件は、output-resにSAR比を無視するオプションを(例えば --output-res -4x720,ignore_sar=on )などを新設すれば実現は可能かもしれません。

Re: Aviutl経由での--output-resで負数指定時のリサイズについて

rigaya様

"出力ファイルのSAR比の指定である"

という一文で、計算式の根拠については納得できました。

 回答を拝見してから、単に画素の縦横比、と思って
いたSARって本当にそれで合ってる?>自分、と再度
調べたんですが(って遅いわっ(^^;))、ざっくり言
うと、ソースの動画を、目的の画面比率で出力するの
に、どういう比率で画素の伸長を行うかを指定する、
という"出力"に関する設定値だったと再認識しました。
入力がたまたま正方ピクセルだからSARが出力の画素
の縦横比になるってだけで…

 …これって動画を扱う人には常識なんだろうなぁ、
 今回の話って今更な事だったのかもなぁ、なんて
 思ってます(お恥ずかしい…)

 何で入力画像の設定値なのかと思い込んでいたの
か…とつらつら考えるに、どこかの時点でSARっての
を"Source Aspect Ratio"だと誤って思い込んでいた
ってのがあるみたいです。"Sample Aspect Ratio"の
略なのに…

 それと、リサイズの負数については、元々横方向
cropした入力にいちいち縦横計算するのめんどいなぁ、
という横着かましたいというグダグダな理由で設定
しただけなので、sarが1:1の大元のtsの時はうまく
いっていたので、sarが4:3のtsの時も流用してみた
ら「あらまぁ」となっただけのことです。
 sarの意味を取り違えていたので期待していた結果
にならなかったのだ、と理由が分かったので、対応
もそれなりにするだけのことですのでお気遣いなく。
 ご提示頂いたように素直に縦横を計算して、tsの
Pixel Aspect Ratio(par)別にプリセットを作る事で
現状で十分目的は達成できますので、実際に作業は
されないと思いますが、NVEncCをいじる必要はない
と思います。あまり使い勝手のいいオプションとは
思えませんし(^^;)


 …というか、いろいろ考えながら、実際にエン
コードしたりffmpegで負数設定でscaleかけてみた
り…とかしているうちに、そもそも縮小しているの
に出力の動画のsarを大元のtsと合わせる必然性っ
てある?って思ってしまって。
 リサイズしないなら、まだ画面比を変えるため
だけに無駄(?)に画素数を増やさなくて済む…とか
いうお題目はありますが…単なる自己満足?
 リサイズするならもう単純にsar1:1で16:9とか
4:3とか、見た目が素直に得られるように設定しま
えばいいような気がしてきました(^^;)

…ということで、どうもお騒がせしました。
それでは。

Re: Re: Aviutl経由での--output-resで負数指定時のリサイズについて

状況承知しました。

たしかに縮小リサイズをする際に、SARを保持したままにする必要があるかというと、微妙かもしれません。

ただ、すみません、いただいたコメントを読む前に実装してしまっていたので、一応、NVEnc 7.49で--output-resにignore_sarオプションを追加してしまっております。

--output-res -4x720,ignore_sar=on

とすると、1440x1080から960x720 4:3への変換は可能となっているはずです。
プロフィール

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様

clcufilters 
- OpenCL/CUDAの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