NVEncバッチ処理でさらなる爆速エンコ

2020/4/5更新
コマンドをコピペすると"--"(連続ハイフン)がWordpressの仕様によりダッシュに変換され、バッチが正常に動作しない問題を修正しました。

AviUtlの拡張プラグインでNVEncの設定画面を開くと、以下のような設定一覧が表示されます。

この画面中の下のほうに、何やらコマンドの羅列が見えます。

 -c hevc --cqp 28:30:32 --gop-len auto --sar 4:3 --bref-mode each

このコマンドオプションを元にバッチファイルを作成して、その上にエンコードしたい動画をDrag&Dropで重ね合わせると自動的にエンコード処理が始まります。

そんなの別にいいよと思うかも知れませんが、バッチファイルでやるとAviUtlでエンコするよりも倍近く時間短縮が可能になります。

上の設定で、50分ほどのTS動画を使ってNVEncのエンコード速度比較をしてみると、
①AviUtl:6分40秒(220fps前後)
②バッチ処理:3分30秒(410fps程度)
という結果になりました。
これだけ違うと、複雑なフィルタ処理でもしない限りバッチファイルで出力するべきでしょう。

ということで、以下バッチファイルを使ったやり方について説明します。

 準備

rigayaの日記帳兼メモ帳に移動し、右側フレーム内のNVEnc+NVEncC(ミラー)と書かれたところをクリックして必要なファイルをダウンロードします。

※NVEnc_4.xx.zipとnpp64_10_dll.zipをダウンロード

 フォルダ作成

エンコード処理用のフォルダをNVEncなど適当な名前で作成し、そこへ必要なファイルを入れていきます。さきほどダウンロードしたNVEnc_4.xx.zipを解凍し、中の「x64」(32bitOSなら「x86」)フォルダの中身をすべて新しく作ったフォルダへ移動させます。
同様に、npp64_10_dll.zipを解凍し、中身を移動します。

バッチファイル作成

さきほどのフォルダ内にバッチファイルを作成します。
テキストファイルを新規に作成し、適当な名前をつけて拡張子を.batに変更します。
中身はとりあえず以下のようにしておきましょう。

NVEncC64.exe -c hevc --cqp 28:30:32 --gop-len auto --sar 4:3 --bref-mode each --audio-copy -i %1 -o %1.mp4

先頭と末尾の赤字部分を記事冒頭の設定コマンドに追加しています。
NVEncC64.exeはエンコード処理の実行ファイル名、--audio-copyと-i %1 -o %1.mp4はのちほどの説明に記載します。
ちなみにBフレームに対応していないグラフィックボードであれば、--bref-mode eachのオプションは使えませんのでコマンドから取り除いてください。

これでNVEncバッチ処理の準備は完了です。エンコードしたい動画を作成したフォルダに移動し、xxx.batファイルの上にドロップすれば自動でmp4にエンコードしたファイルが作成されます。

バッチファイルのオプションパラメータ

NVEncのオプションはたくさんあるので覚えるのは大変です。
こちらに各オプションの細かい解説があります。
なのでここでは上の設定例の中からごく基本的なものだけ説明しますので、細かい設定の詰めはそれぞれで工夫してみてください。

--cqp 28:30:32

画質とファイルサイズのバランスを決めるところで、細かい点は置いたとしてもこことアスペクト比は基本の設定になります。
数字が大きくなるほどエンコード後の動画はサイズ小・低画質になり、数字が小さくなるほどサイズ大・高画質になります。
例の28:30:32はかなり強めに圧縮をかけていますので、ファイルサイズが大きくなっても高画質を維持したい場合は20:23:25などのように数字を小さくしてみてください。

--sar 4:3

アスペクト比の設定です。
sar 4:3はアスペクト比4:3ということではありません。ソース動画により異なるので、比率を計算するか、何パターンかバッチファイルを用意しておくのがよいでしょう。
 ①地デジ/BSデジタル放送(1440x1080)で16:9映像の場合
  --sar 4:3

 ②ブルーレイ(1920x1080)で16:9映像の場合
  --sar 1:1

 ③DVD(720x480)で4:3映像の場合
  --sar 8:9

 ④DVD(720x480)で16:9映像の場合
  --sar 32:27

--audio-copy

音声設定です。--audio-copyは元の音声をエンコードせずにそのままコピーするという意味になります。--audio-codec aacという具合に音声コーデックを指定したり、--audio-bitrate 192などビットレートを192kbpsに指定してエンコードすることもできます。

-i %1 -o %1.mp4

元動画のファイル名に、拡張子.mp4を付加してファイルに出力するという設定です。

他にも元動画の種類により、オプションを組み合わせてバッチファイルを作成します。
例えばDVDから抽出したmpgファイル用だとこんな感じにします。

NVEncC64.exe -c hevc --interlace tff --cqp 18:21:24 --gop-len 300 --sar 32:27 --bref-mode each --videoformat ntsc --vpp-afs timecode=true --audio-copy -i %1 -o %1.mp4

--interlace tff:フィールド順序指定(インタレース映像のフィールド順序にtffとbffというの       があるのですが、あまり気にしなくてもいいものの指定は必要)
--vpp-afs:インタレース解除
  timecode=true:音ズレ防止(vpp-afsのオプション)

このように、元の動画がDVDの場合は、NTSCのインタレース映像に関連したオプションを追加したりします。

単純にプログレッシブ動画を圧縮したい場合などは、こんな感じにオプションを追加していったものを作成し、汎用的に使えるものに調整していきます。

NVEncC64.exe -c hevc --dar 16:9 --lookahead 32 --avcuvid --cqp 24:28:30 --aq --aq-strength 0 --bref-mode each --bframes 3 --gop-len 300 --chapter-copy --audio-copy -i %1 -o %1.mp4

他によく使われるオプションとしては、--output-depth 10などがありますが、画質やファイルサイズがちょっとだけ変化するようなオプションは無数にありますので、その辺は使ってみて試すしかありません。

その他にも、ノイズ除去やリサイズなどのフィルタ処理もできますので、AviUtilのGUI上で設定して表示されるコマンドをコピペしたり、ネットで他の人のバッチをまねしてみたりといろいろ試してみてください。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする