Aviutlのエンコード時間が遅いと感じるなら「NVENCエンコーダー」を使う

Aviutlのエンコード遅すぎ!!って感じな人に向けて、Aviutlのエンコード高速化するなら”NVENCエンコーダーを使うのが一番効果がある”という話について書きたいと思います。

Aviutlの高速化はネット上にいろいろ情報があるので、まずはそのあたりにふれてから、NVENCとX264の比較や簡単な使い方をまとめていきたいと思います。

Aviutlのエンコードをはやくするには結局なにしたらいいの?

Aviutlのエンコード高速化についてネットで言われているのは以下のようなものがあります。

  • Aviutlの設定でキャッシュフレーム数を増やす
  • x264の設定で自動マルチパスをシングルパスにする(デフォはシングルパス)
  • エンコーダーの設定でビットレートを下げる
  • その他小手先もろもろ

読者の方をがっかりさせるかもしれませんが、わたしは上記項目を検証する気になれませんでした。ただこのような情報は根拠があって公開されているはずなので、ためしてみてもよいかもしれません。シングルパスの件はそもそもx264のデフォルト設定でシングルパスになっているので・・・。それでもAviutlのエンコードに時間がかかるってことですので無視ですね。

結局のところ上記の項目は個人的に小手先の改善かと思っています。なので今回はAviutlのエンコード時間を大幅に短縮できるNVENCエンコーダーについてふれたいと思います。

NVENCとはなんなのか?

NVENCはグラフィックカードでビデオエンコーディングできるもので、ハードウェアエンコーダーの1種です。この技術はNvidiaの技術みたいです。詳しいことは、 Nvidia NVENC – Wikipedia を参照いただければと思います。

情報を調べた結果ビデオエンコーダーには大きく分けてソフトウェアエンコーダーとハードウェアエンコーダーというものがあるようです。ハードウェアエンコーダーには以下のような特徴があるようです。

  • ビットレート当たりの画質が悪い
  • ノイズがはいることがある
  • 高速にエンコードできる
  • 省電力でエンコードできる
  • CPUに負荷をかけずにエンコードできる

正直に申し上げると、上記項目は二次情報です。わたし自身がすべてを検証したわけではありません。ですが、高速エンコードできるのはたしかです。なぜなら、これは検証済みだからです。あとの見出しに検証結果をのせています。

さきほどはハードウェアエンコーダーの話しをかきましたが、各ソフトウェアエンコーダーの違いについては Video codec – Wikipedia の情報が一番正確かと思いますのでそちらを参照するのが一番よいと思われます。

おそらくこの記事を見ているひとはこのような細かいエンコーダーの情報は求めていないでしょうが、概要を簡単に理解しておくことはよいことです。すいません先にすすみましょう。

AviutlでNVENCを使いエンコード時間を短縮する

AviutlにNVENCエンコーダーを導入する方法

結局のところNVENCはエヌビディアの技術ではあるもののこれをAviutl用に使えるようしたものがネットで公開されています。

AviutlでNVENCを使う方法は簡単にまとめると以下のようになります。

  1. 開発者のページでAviutl用のNVENCエンコーダーをダウンロードする。
  2. ダウンロードしたフォルダの中にあるauo_setup.exeをクリックし実行する
  3. Aviutlのパスを指定し、指示のとおりすすめる
  4. AviutlでNVENCを使うための必要なファイルがインストールされる。

Aviutl用のNVENCはrigaya氏という方が開発されていて、rigaya氏のホームページにダウンロードリンクも存在します。

rigayaの日記兼メモ帳

Aviutl用のNVENCエンコーダーが使えるかチェックする

開発者のページからダウンロードしたフォルダには、NVENCが利用可能かどうかをチェックするバッチファイルが同封されています。バッチファイルとはファイルの拡張子が.batのものです。

該当バッチファイルをクリックすると次のようにコマンドラインがたちあがり、NVENCは利用できますと表示されました。利用できなければもちろんエラーがでます。この場合は「NVENCは利用できません」などと表示されるはずです。
NVENC 利用可能かチェック

NVENCを利用するにはグラフィックボードのドライバーを最新のものにする必要があります。以下のサイトで入手できます。

NVIDIAドライバダウンロード

x264 VS NVENC

Aviutlのエンコーダーx264 と NVENCを使った検証結果をあげておきます。使用した動画これです。この動画は5分の動画↓

まずx264でエンコードした結果から。プロファイルは「youtube」をえらびました。結果は約2分22秒。
x264 エンコード時間

話をわかりやすくするためにWindowsのストップウォッチでエンコード時間を測ってますが、ちゃんとAviutlのウインドウにもエンコード時間は表示されています。

次はNVENCでエンコードした結果です。プロファイルは「HEVC ビットレート指定 高画質」をえらびました。結果は約1分26秒。
NVENC エンコード時間

たしかにNVENCはエンコードが速いことがわかりました。

次は画質の比較です。パッとみた感じだとまったく違いがわかりませんでした。↓
x264 nvenc 画質比較

Aviutlのエンコード時間短縮でNVENCを使うことについてのまとめ

ちょっと情報をつめこみすぎた感がありますが簡単にまとめると以下のようになります。

  • Aviutl用のNVENCエンコーダーを使うとたしかにx264に比べてエンコードが速い
  • NVENCのノイズや画質についてはx264と違いがわからないレベル
  • Aviutl用のNVENCの導入が少し面倒。(グラフィックボードのドライバー更新があるため)

もしかしたら、この記事を読んでいるかたは、ひどい記事だと思われているかもしれません。すいません。Aviutl用のNVENCの導入は慣れていない方だとつまづく可能性があります。ただそれほど難しいことではありません。

Aviutlを使っているかたの大半はおそらくx264エンコーダーをつかっていると思いますが、NVENCってのもあるよって情報を広めたかったのでこの記事をかいてみました。Aviutlのエンコーダーはx264が主流なのは変わらないと思いますが、あまりにもエンコードが遅いとかんじたので、場合によってはNVENCを使うのもありかと思います。かなりとりとめのない記事になってしまいましたが、以上で終わりになります。

でもNVENCの情報って数年前からあるから、もしかして知らないのってわたしだけ? では。


追記

ゆっくりムービーメーカー3で吐き出した、exoをAviutlに貼り付け。その後NVENCでエンコードを行うも、x264でエンコードした結果とエンコード時間がほとんどかわらないことが判明しました。何の根拠もありませんが、Aviutlで.exoから読みこんだ場合クリップ数が多すぎて、どっちでやってもあんまり変わらん、みたいなことが起きているのかもしれません。

結果的にはゆっくりムービーメーカーで出力した膨大なアイテムに対しては、エンコーダーによる時間短縮はのぞめないようです。かなり中途半端な情報となってしまいすいません。


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78