Aviutlで動画データをエンコードしている際に、突然以下の様な表示が出てしまうことがあります。
- メモリ不足です。(メモリが不足しています。)
- アドレス"○○○"で例外"○○○"が発生しました。
- 正常な動作が出来ない可能性がありますが処理を継続しますか?
上記の表示が出ると、出力は強制的に中断され、Aviutlを再起動せざるをえなくなります。これでは動画をエンコードすることができず、非常に困りますよね。
そこで今回は、エンコード中にメモリ不足エラーが発生する場合の原因とその対処法について、分かりやすくまとめてみました!
『メモリ不足エラー』の原因
『メモリ不足エラー』は、その名の通りメモリの不足によって生じます。
エンコード作業というものは非常にメモリを食います。Aviutlでエンコードを行う際は、メモリ(RAM)の値が最低でも4GB、できれば8GB以上のPCが推奨されます。
しかし、じゃあ8GB、16GBのメモリを積んだPCでエンコードすれば良いのかと言われるとそうではなく、大量のメモリを積んだPCでもメモリエラーは発生することがあります。
それは何故かというと、基本的にAviutlは32bitのソフトなので、デフォルトの状態だと2GBまでしかメモリを使用することができないためです。
したがってAviutlで重い動画データをエンコードする際は、限られたメモリをいかに節約して使用するかがカギとなってきます。そこで次項から、メモリ不足への対処法を紹介します。
対処法①:『システムの設定』の見直し
まず第一に見直すべきものは『システムの設定』です。
Aviutlメニューバーから『ファイル』→『環境設定』→『システムの設定』を選択します。
すると以下の様な画面が出現するので、今回は次の3項目の設定に注目してください。
最大画像サイズ
最大画像サイズとは、読み込むことのできるファイルの解像度の上限を指定する値です。
この値を必要以上に大きくするとメモリ不足に陥りやすくなるので、自身がエンコードを行う動画のサイズに合わせて設定してください。※ちなみに私は普段、1280×720の動画しか制作していないため、幅1280 高さ720と設定しています。
最大フレーム数
最大フレーム数は、Aviutlで扱うことのできる動画の最大長さ(フレーム数)を指定する値です。
標準では個々の値は『320000』となっています。これはつまり、30FPS(1秒間に30フレーム)動画の場合、10666秒(約3時間)の長さまで編集出来るという事です。また60fpsの動画の場合は、半分の5333秒(約1時半)まで編集できます。
では、この値を大きく設定しておけば良いのか、と言うとそうではなく、大きくし過ぎるとメモリ不足を起こしやすくなります。
なので、よほどの長時間の動画(1時間半以上)をエンコードすることがない場合は、初期値の『320000』のままにしておきましょう。
LargeAddressAwareを有効にする
※この設定に限っては、変更にあたりAviutlを管理者権限として実行している必要があります。aviutl.exeを右クリックして『管理者権限として実行』から立ち上げておいてください。
使用しているPCのOSが64bitであり、かつメモリを4GB以上積んでいる場合は『LargeAddressAwareを有効にする』の項目にチェックを入れてください。
LargeAddressAwareを有効にすることにより、通常Aviutlは2GBまでしか使用することができないのを、4GBまで使用可能にすることができます。かなり重要な項目です(゚∀゚)
以上の3点の項目の見直しが完了したら、Aviutlメニューバーの『ファイル』から『終了』を選択し、Aviutlを一旦閉じてください。こうすることで、設定が保存されます。
対処法②:分割エンコード
対処法①で紹介した以外にも、重いプラグインやフィルターを切ったりすることが対処法として挙げられます。しかし正直言って、対処法①を試してもメモリエラーでどうしてもエンコードできない場合、他の方法を試したところで焼け石に水です。あまり意味はありません。
対処法①を試したにも関わらず、エンコード中にメモリ不足に陥る場合は、読み込んでいる動画データの数が多すぎることが考えられます。
実際、私も28分の動画をエンコードした際に、何度もメモリー不足で動画を出力できませんでした。以下にその時の私の拡張編集を示します。
一目見てわかると思いますが、動画ファイルの量が非常に多い!(今見るとスゴイきたないタイムラインだなー)。しかもその一つ一つが容量の大きいaviデータです。これではエンコードの時にメモリー不足に陥るはずですね。
そこで最終手段として、分割エンコードという方法をとります。
これは名前の通り、長時間の編集データをいくつかに分割して、ひとまず無圧縮のaviファイルとしてエンコード出力します。そして後でそれらを一つにまとめ、再度エンコードするという方法です。こうすることで一度にエンコードする動画ファイルの数を減らし、メモリ不足での出力エラーを回避することができます。
実際に私の場合は、28分の編集データを10分・10分・8分の3つに分けてavi出力し、あとで一つに繋ぎ直してx264(GUI)Exエンコードでmp4出力しました。
この時、一度目のエンコードは無圧縮で行うため、画質の劣化は起きません。
分割エンコードの方法
分割エンコードの方法は簡単です。
まず最初に拡張編集上の、分割したい始点をクリックしてカーソルを合わせます。
次に分割したい部分の終点を、「shiftキー」を押しながらクリックします。すると上のタイムバーがその部分だけ青くなると思います。
この状態でエンコードすると、その部分だけ出力することができます。この機能を利用し、編集データをいくつかに区切ってエンコードしていきます。
無圧縮AVI出力の方法
無圧縮のAvi形式で出力するには、メニューバーの『ファイル』より『AVI出力』を選択します。
そしてビデオ圧縮の右側の表記(画像赤枠部分)が『未圧縮』になっていることを確認し、『保存』をクリックしてください。
これで画質を劣化させることなく、Avi動画データを出力することができます。
※この時、Avi動画データは数分の長さでも数十GBになってしまうため、出力先のドライブの空き容量に注意してください。
分割したAvi動画データをすべて出力し終えたら、新しくプロジェクトを作成し、出力したAvi動画データを拡張編集上で繋ぎなおしてx264(GUI)Exエンコードを行うことで、メモリ不足にならずに無事エンコードが完了すると思います!