#NVDecを有効活用したかった
##Core i7 4770ではもはや役者不足
筆者の環境を書くと、CPUはCore i7 4770、メモリはDDR3の16GB、GPUはGeForce 1050Tiです。これでAviUtlを使いFullHD、60Pの動画をNVEncでエンコードしようとしてもタスクマネージャのGPUのところのVideo Encodeが100%にならないのです。なんでかと思ってたら前段階の動画デコードにCPUを使用していて、それがずっと100%に張り付いていた。どうもここがボトルネックみたいだったのです。もう5年も6年も前のCPUで、いくらCore i7といえどもはや役者不足になっていたのでした。
##試しにrigaya氏のNVEncCでデコードをGPUに任せてみる
CPUデコードではGPUのVideo Encodeが40%行かないくらいしか有効活用できなく、20分の動画エンコードにかかった時間がMUX合わせて10分かかりました。それがデコードもGPUに任せると、Video Decodeが50%程度になり、Video Encodeが100%にほぼ張り付き、総エンコード時間は約2分に短縮されました。コマンドとしては、
NVEncC64.exe --avhw --fps 60 -i file1.mp4 --audio-copy -o file2.mp4
です。--avhw
がキモ。これでデコードをGPUに任せることができます。
AviUtlでNVencを使った場合の、こんなしょぼいVideo Encodeの使い方ぶり、そしてVideo Decodeを使わない状況から、
このようにキッチリ回してくれます。CPUもさほど使わなくなります。
##AviUtlで恩恵を受けることはできるか
できます。L-SMASH Works r935からNVDecを利用できるようになりました。AviUtlの「ファイル」→「環境設定」→「入力プラグインの設定」→「L-SMASH Works File Readerの設定」を選びます。
そうすると、
こんな画面がでますので「Preferred decoders」のところにh264_cuvid,hevc_cuvid
と入力します。そうすることでGPUでデコードを処理できるようになります。このように。
思ったほど使ってはいませんが、CPUが100%べったり張り付きではないことはわかります。総エンコード時間は11分。あれ?
##総括
無編集で良いのならばrigaya氏のNVEncCで5倍くらい速くできる。AviUtlで編集するのだとL-SMASH Worksで一応GPUデコードはできるものの、恩恵はあんまりない?という結果に。L-SMASH Works r935 Release2では「h264_nvdec」オプションができたものの利用できないです。なんででしょうね…。
##参考にしたところ
NVEncC オプションリスト
L-SMASH Works r935 で何が変わったの?
L-SMASH Works r935 release2 の更新内容