English version of changelog>> [NVEncC] ・avsw/avhw読み込み時の入力オプションを指定するオプションを追加。 ( --input-option )
・trueHDなどの一部音声がうまくmuxできないのを改善。 ・4.66から、vpp-yadifの出力が異常となってしまう問題への対策。 yadifを変更した記憶はなく、なにが原因かさっぱりわからなかったので、とりあえず処理を追いかけてみると、vpp-yadifのソースコードから呼び出している関数が、vpp-yadifのソースコードにあるほうの関数でなく、vpp-smoothの同名関数をなぜか呼びに行くという、わけのわからないことが起こっていた。よくわからん…。
とりあえず、関数名をそれぞれ変えることにして回避。
[NVEnc.auo] ・4.67での変更が不十分だったので修正。 特にAviutlで自動フィールドシフトを使用した場合に正常に動作しなかったのを修正。そのほかmuxerを読んだときに死んでしまうエラーの場合には、改善されると思う。
ダウンロード>> ダウンロード (ミラー) >> OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。 NVEncCのオプションについてはこちら。
NVEncCオプション一覧> ソースはこちら>>
スポンサーサイト
自動フィールドシフト有効時、remuxer.exeのエラーが発生しないことを確認しました。 実は今までエンコード中にaviutlを最小化する、というのを結構やっていて、ひょっとするとフレームが化けていたのに気づいていなかった?…と今更ながらに冷や汗かいていたのですが、これで安心して最新版を使えます。 ありがとうございました。
rigaya さん、vpp-yadif の問題が修正されていることを確認しました。いつもテストに使っているファイルでも、画は正常ですし出力サイズも v4.65 と同一でした。迅速なご対処に感謝いたします。 最初、緑な画面を見たときは心底驚きましたが。消してしまった 10 あまりほどの TS ファイルも1 つを除いて取り戻せましたし、その 1 つも 9 割が無事な上に再放送をよくやっている番組なので事実上問題ありません。ちょっと変わった経験をしたぐらいに済んで本当に良かったです(笑) 原因が不審ということでコンパイラのバグなんでしょうかね。最適化周りで突飛な動きになることがあると聞きますが…。
ご心配をおかけしすみません。1 つを除いて取り戻せましたとのことで、大きな被害がなく安心いたしました。 わたしもちょっと予想外の原因で驚いています…。
NVEncは、マルチスレッドの動作をするのでしょうか?14C28TのCPUとQuadro_RTX_4000のNVEncを使用していますが、1スレッドだけ100%になっていたので気になった所存です
一応、こんな感じでデフォルトで複数のスレッドが動作します。
1. デコード
2. 映像フィルタ・エンコード (メインスレッド)
3. 出力 + 音声フィルタ・エンコード
4. パフォーマンス測定
SWデコードの場合、対応していれば1の中でさらにマルチスレッドします。
HWデコード+HWエンコードの場合、正直 2. のメインスレッド以外は負荷が少なすぎてあまり見えません。2.のスレッドのCPU使用率が100%に貼り付くことが多いですが、これは速度を最大化するため、GPU処理の終了をずっとチェックしているからです。
"--cuda-schedule sync"を指定すると、GPUタスクの終了までスレッドをスリープさせるようになるので、メインスレッドのCPU使用率も下がります(そのかわり速度が落ちてしまうことが多いです)。
https://github.com/rigaya/NVEnc/blob/master/NVEncC_Options.ja.md#--cuda-schedule-string HWデコード+HWエンコードの場合、CPUの演算量自体はさほど多くないので、読み込み(入力・デコード)を待っていたり、GPUの処理を待っていたりすることが多いです。
はじめまして
HDDにあるh.264のデータ量を減らすためにh.265に再変換しようと考えており、NVEncCで再変換を行っています。
最初はmain10プロファイルでエンコードをしていたのですが、
main444にすると少しだけSSIMが向上したのでmain444で再変換を行うようにしました。
しかし、ログをよく見ると"Stream #0:0: Video: hevc (Main Still Picture)"と出力されていました。
main444は "
https://www.jstage.jst.go.jp/article/itej/69/3/69_218/_pdf" の220ページに書かれているようなRExtのMain 444であって、Main Still pictureとは別のプロファイルだと考えていたのですが、GeForceはMain Still pictureとして扱うのでしょうか。
以下がログなのですが、指定はmain444なのにStreamにはMain Still Pictureと表示されています。
NVEncC (x64) 4.68 (r1402) by rigaya, Mar 7 2020 21:57:25 (VC 1924/Win/avx2)
OS Version Windows 10 x64 (18363)
CPU AMD Ryzen 9 3900X 12-Core Processor (12C/24T)
GPU #0: GeForce RTX 2060 SUPER (2176 cores, 1650 MHz)[PCIe3x16][442.59]
NVENC / CUDA NVENC API 9.1, CUDA 10.2, schedule mode: spin
Input Buffers CUDA, 46 frames
Input Info avcuvid: H.264/AVC, 1440x1080, 30000/1001 fps
Vpp Filters cspconv(nv12 -> yuv444(16bit))
ssim psnr (yuv444(10bit))
Output Info H.265/HEVC main444 10bit @ Level auto
1440x1080p 4:3 29.970fps (30000/1001fps)
avwriter: hevc, aac => matroska
Encoder Preset quality
Rate Control VBRHQ
Bitrate 1500 kbps (Max: 25000 kbps)
Target Quality auto
Initial QP I:20 P:23 B:25
VBV buf size auto
Lookahead on, 32 frames, Adaptive I, B Insert
GOP length 360 frames
B frames 5 frames [ref mode: each]
Ref frames 16 frames, MultiRef L0:6 L1:2
AQ on
CU max / min auto / 8
VUI range:full
Others mv:Q-pel nonrefp aud pic-struct
Output #0, matroska, to 'Q:\video_tempQ\conv2\_265068.mkv':
Metadata:
encoding_tool : NVEncC (x64) 4.68
encoder : Lavf58.35.101
Stream #0:0: Video: hevc (Main Still Picture), yuv444p10le(progressive), 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 1k tbn (default)
Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp (default)
Metadata:
BPS-eng : 181249
DURATION-eng : 02:09:53.600000000
NUMBER_OF_FRAMES-eng: 365325
NUMBER_OF_BYTES-eng: 176573627
_STATISTICS_WRITING_APP-eng: mkvmerge v31.0.0 ('Dolores In A Shoestand') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2019-09-05 07:01:19
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
main444時のそのあたりの挙動はチェックしてませんでした。次回修正してみたいと思います。
現在、GeForce 445.75、Win10、64bitを使っています。 いつの間にか、以下のようなエラー表示が出ているのに気づきました。 nvenc : Error on nvEncGetEncodePresetConfig: 4 (NVENC this indicates that device passed to the API call is invalid) 表示は出るのですが、エンコードは進みます。問題なく動画が できていると思います。 どのような状況が考えられるか、お教えいただけると助かります。
---------------------------------------------------- auo [info]: NVEncC options... -c h264 --cqp 20:23:25 --qp-init 20:23:25 --gop-len auto --bref-mode each --no-mp4opt -o "E:\TFC+録画用\てすと.mp4" --sm -i - nvenc : Error on nvEncGetEncodePresetConfig: 4 (NVENC this indicates that device passed to the API call is invalid) sm: could not open parent process handle. failed to initialize file reader(s). Failed to open input file. auo [error]: NVEncCが予期せず途中終了しました。NVEncCに不正なパラメータ(オプション)が渡された可能性があります。 auo [error]: NVEncCが予期せず途中終了しました。NVEncCに不正なパラメータ(オプション)が渡された可能性があります。 auo [info]: CPU使用率: Aviutl: 0.18% / NVEnc: 7.23% auo [info]: Aviutl 平均フレーム取得時間: inf ms auo [info]: NVEncエンコード時間 : 0時間 0分 0.7秒 auo [info]: 総エンコード時間 : 0時間 0分 0.9秒 2020年3月25日 5時35分 エンコード終了 -------------------------------------------------------------------------- このようなエラーで止まってしまいます。対策がわかればぜひ教えて頂きたいです。
元々入っていたNVEnc関係のファイルをすべて削除した後に再インストールしたら止まること無く動くようになりました。ただ上の方が言っているようにエラーが出ます。 nvenc : Error on nvEncGetEncodePresetConfig: 4 (NVENC this indicates that device passed to the API call is invalid) 曖昧な書き方で申し訳ないのですが何かわかることがあればよろしくお願いします。
いつも更新おつかれさまです 自分も同じく445.75にアップデートしてから nvenc : Error on nvEncGetEncodePresetConfig: 4 (NVENC this indicates that device passed to the API call is invalid) のエラーが出るようになりました NVEncCx64 4.65を使っていて出たのですが、4.68 4.52 4.42 4.38で試しても同様でした win10 64bit GTX1050+mp.4でh.264、HEVCのデフォルトオプションで共に発生しています 作業は最後まで普通にできて動画も普通に見られます そういえば今回のドライバアップデートではGeforce Experienceに再起動を促されました(再起動するまで該当GPUは使用できない状態、タスクマネージャーにも表示されず) いつもはそのまま使えるのですが大きな変更があったのでしょうかね これとは関係ないのですがQSVEncオプション一覧で 「--i-adapt」が「--i-apapt」となってます(--bも同様) 以前気がついたのですが報告するのを忘れてました
役に立つか分かりませんがGTX1050のNVEncC_future_testで4.65と4.68を比較したところ以下のような違いがありました Codec: H.264/AVC Max Level (4.65) 51 (4.68) 62 Min Level (4.65) 1 (4.68) 10 Codec: H.265/HEVC Max Level (4.65) 62 (4.68) 186 Min Level (4.65) 1 (4.68) 30 Constrained Encoding (4.65) no (4.68) yes
すみません4.65の方はドライバアップデート前のものでした nvenc_futuresにドライバのバージョンが出力されてないので分かりませんが、2/25に実行してるので2つくらい前のものかと思われます そもそもNVEncC_future_testの仕様が変わってるのでなければNVEncのバージョンで差はでませんね、お騒がせしました なので上記のものは 4.65→(バージョンが定かではない)以前のドライバ 4.68→445.75 に変換して見てください
ドライバを445.75に更新したらあっさり再現しました。
このメッセージはエンコードには一切関係ないですが、気になるのでNVEnc 4.69でこのメッセージが出ないよう、回避するようにしました。
https://rigaya34589.blog.fc2.com/blog-entry-1234.html