English version of changelog>>やっとNVENC SDK 9.0が公開されたので、ちゃちゃっと更新。
[共通]・NVENC SDK 9.0に更新。NVIDIA グラフィックドライバ 418.81以降が必要。・HEVCエンコ時のB ref modeの設定を追加。(--bref-mode middle/each)
[NVEnc.auo]・設定画面に「品質(--preset)」「Bフレーム参照モード(--bref-mode)」を追加。[NVEncC]・--presetをreadmeに追加。
NVENC SDKによればTuringのNVENC機能の更新点は以下の通り。
・HEVCでのBフレームのサポートによる圧縮効率の向上。
・そのほかH.264/HEVCの両方での品質の向上。RDO(歪みレート最適化)や複数フレームの参照をサポートによる。
** 注意点 **
TuringのうちTU117(GTX1650?)だけはHEVC Bフレームはサポートされない、つまり逆に言えばTU116(GTX1660?)はHEVC Bフレームはサポートあり。
というかTU117ではダメということはTU117はGP107とそんなに変わんないということ? それにしてもそういうややこしいことしないで欲しいなあ…。なんかNVENC SDKが更新されてしれっとTU117もHEVCのBフレームがありになってるぽいです…。
ダウンロード>>ダウンロード (ミラー) >>OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。NVEncCのオプションについてはこちら。
NVEncCオプション一覧>ソースはこちら>>
スポンサーサイト
NVEnc + NVEncCを使わせて頂いてます。有難う御座います。
NVEncでは単一スレッドに処理が回っている様で、CPU使用率が
20%前後となっています。その為、GPU使用率も上がりません。
しかしx264guiEx 2.xxでは全スレッドに処理が回って
CPU使用率が90%前後となります。ソースが理解出来ず
お力になれませんが、何か処理の差が有るのでしょうか。
auo [info]: converting YUY2 -> nv12p, using AVX AVX2
auo [info]: NVEncC options...
-c h264 --cbrhq 3000 --max-bitrate 3000 --qp-init 20:23:25 --lookahead 32 --gop-len auto -o "D:\My Temporary\444.264" --y4m
-i -
NVEncC (x64) 4.31 (r1001) by rigaya, Feb 12 2019 22:00:22 (VC 1900/Win/avx2)
OS Version Windows 10 x64 (17763)
CPU AMD Ryzen 5 2600 Six-Core Processor (6C/12T)
GPU #0: GeForce RTX 2070 (4608 cores, 1620 MHz)[PCIe3x16][418.81]
NVENC / CUDA NVENC API 9.0, CUDA 10.1, schedule mode: auto
Input Buffers CUDA, 44 frames
Input Info y4m(nv12)->nv12 [AVX2], 640x480, 2997/125 fps
Vpp Filters copyHtoD
Output Info H.264/AVC high @ Level auto
640x480p 1:1 23.976fps (2997/125fps)
Encoder Preset default
Rate Control CBRHQ
Bitrate 3000 kbps (Max: 3000 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 240 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
encoded 32235 frames, 364.79 fps, 2988.53 kbps, 478.98 MB
encode time 0:01:28, CPU: 1.6, GPU: 5.5, VE: 23.1, GPUClock: 1410MHz, VEClock: 1305MHz
frame type IDR 341
frame type I 341, total size 20.90 MB
frame type P 10107, total size 274.66 MB
frame type B 21787, total size 183.42 MB
auo [info]: CPU使用率: Aviutl: 17.20% / NVEnc: 1.72%
auo [info]: Aviutl 平均フレーム取得時間: 2.541 ms
auo [info]: NVEncエンコード時間 : 0時間 1分30.4秒
ログのご提示ありがとうございます。
ログを見ると、
Aviutl 平均フレーム取得時間: 2.541 ms
となっていますから、CPUで行われるAviutlのフレーム取得の処理(デコード・フィルタ等)に1フレーム当たり2.541msかかっていることがわかります。1000/2.541=394なので、Aviutl側のフレーム取得の処理だけでも394fpsを超えられないことになります。
実際には、フレーム取得をした後、NVEncCに転送する時間がかかるので、さらに速度が若干落ちていますが、「フレーム取得時間」による上限394fpsを考慮すれば、364.79fpsなら十分速度が出ているように思われます。
x264エンコード時にCPU使用率が高いのは、主にx264側のエンコードの処理の並列性が特に高いためです。NVEnc利用時には、エンコード部分がCPU主体からGPU主体に置き換わりますから、CPU使用率が低下するのが一般的です。
解説を頂き有難う御座いました。失礼を致しました。
2070エンコード速度記事と比較した際に低めな値が出たので
CPUに余裕が有るのなら更に詰め込めるのではと
安易な考えをしていました。
フレーム取得が上限で有ればストレージも
かなめになるという事ですね。
重ねて感謝致します。
v4.30よりTSから音声コピー時に、かなり音ズレが発生するようになりました。
どうもtrim指定した場合に発生するようです。
ご確認頂き、改善いただければ幸いです。
↓実際に使用したコマンドです。
NVEncC64.exe --maxbitrate 20000 --colorprim bt709 --transfer bt709 --colormatrix bt709 --avhw --interlace tff --audio-copy 1 -i "動画.ts" -o "動画.mp4" --output-res 1280x720 --vpp-resize lanczos --trim 5104:174791 --sar 1:1 --aq --cqp 26:28:29 --fps 30000/1001 --vpp-deinterlace adaptive
ご指摘ありがとうございます。
おっしゃる通り、trim時の動作がおかしくなっているようです。調べて修正したいと思います。
パソコン初心者です。
パソコンにはgtx1060が入ってるのですが、aviutlでnvencで動画をエンコードできません。どのような原因が考えられるのでしょうか?
>> audiocopyの音ズレ
遅くなりましたが、4.32で修正できているかと思います。
>> gtx1060
多くの場合は、GPUドライバのバージョンが古かったりするのですが…。