今更だけどAviUtl2の動画出力って、どうするのがいいんだろう?
結論から言うと
対応ハードウェアあるなら基本NVENCでいいんじゃない?
画質を重視したいならx264エンコードもあり?
はじめに
rigaya氏が作成されているx264guiExがAviUtl2に正式対応ということで、今までなんとなくで設定してきた動画出力(エンコード)の方式は結局何が一番いいんだろう?と思ったためメモ代わりに。
※この辺あんま詳しくないので参考程度に読んでください
※細かいオプションの話等はないです
エンコードについて
ソフトウェアエンコード
ソフトウェアエンコードは、パソコンにインストールされたソフトウェアを利用してエンコードする方法です。
メリットとしては、パソコンとソフトウェアだけでエンコード作業ができますので、周辺機器などを購入する必要がないことです。ただし、デメリットとしては、パソコンのCPUの性能にもよりますが、ソフトウェアエンコードは、ハードウェアエンコードよりも、エンコード処理の時間が、ハードウェアエンコードに比べてかかることが挙げられます。
ハードウェアエンコード
ハードウェアエンコードは、パソコンに搭載されるした専用の周辺機器であるグラフィックカードなど、専用の周辺機器などを用いてエンコードする方法です。
メリットとしてはエンコード処理をハードウエアで行うので、短い時間で書き出しができること。デメリットとしては、グラフィックカードや周辺機器などの購入が必要になることです。
AviUtlにおいて
本記事はAviUtlを前提としているので、まずは同環境での話について。
本体機能として用意されているのはAVI出力なので、大体の場合は外部プラグインを使ってエンコードするのが一般的。とはいえ裾野の広さからか、それひとつとっても選択肢があった。
最終的には「かんたんMP4出力」「x264guiEx」のいずれかに収束していたイメージがある。
この例では、概ね「かんたんMP4出力」がハードウェアエンコード、「x264guiEx」がソフトウェアエンコードにあたる。
そもそも動画のエンコードというものは本当に複雑怪奇で、動画圧縮のコーデックだけでも様々、さらに動画を投稿するプラットフォーム上での制約があったことなどから、普通のユーザーからするとこのあたりの理解はかなり難しかった。
そのため、有志の作成した外部プラグインには
導入が結構簡単
プラットフォームに合わせた規定のプロファイルがある
GUI操作が可能
(ターゲットサイズがある)
等々の面でお世話になった人も多いはず。
一般論としては
高機能なCPUやGPU、大規模なストレージが普及し、プラットフォーム側の制限も少なくなった昨今、動画のエンコードにおいては速さ・品質が求められるポイントになっている。
そういう意味では、ソフトウェア/ハードウェアエンコードは概ねそこのトレードオフになっている……はず。
例えばこのOBSのブログ記事では、動画の配信(ストリーミング)について述べられており、かなりざっくり端折ると
"最良の設定"は個々のユースケースによって様々
配信ではほとんどの場合、x264がビットレートあたりの全体的な品質は最高
(※ストリーミングはビットレートが制約要因となることが多い)でもCPUにめっちゃ負荷かかるよね、リアルタイムなら尚更
という感じ。
ただし執筆日が2017年なので、2025年現在とはちょっと世相が違うかも?
また、㈱PLAYのブログによると、結果としては
ハードウェアエンコードの方がソフトウェアエンコードよりも画質の劣化はあるが、非常に高速でエンコードができる
と述べられているように、だいたいの場合ハードウェアエンコードは高速化や負荷の分散と引き換えに一部で画質の劣化が見られる、ぐらいの認識で良さそう。
結局何を使えばいいの?
AviUtl2においては「x264guiEx」「NVEnc」については正式に対応が発表され、「かんたんMP4出力」も動作が確認されているようなので、
一応ソフトウェア/ハードウェアエンコード両方できるようにしておく
「NVEnc」or「かんたんMP4出力」は好み、そのへんの知識やこだわりがあるならNVEncか
ぐらいか。
なんか当たり障りのないことばっかり書いているような……
