AviUtlエンコード中のメモリ不足対処法:使用中メモリを減らす[動画編集ソフト]
【結論】AviUtlエディタ側のメモリ使用量を減らす
AviUtlで動画をエンコードする際、まれにその途中でメモリ不足のエラーが出て、処理に失敗してしまうことがある。
ここでは、その原因と対処法を解説。
なぜ?
メモリは編集用とエンコード用が別
編集用のメモリとエンコード用のメモリは別々に確保されるらしく、エンコードを開始するからといってエディタ側が使用するメモリが自動的に解放されるわけではないため。
AviUtlの場合、エンコードは基本的に外部プラグインを使っているのだから、これで当たり前かも。
AviUtlはメモリ2GBまでしか対応していない
AviUtlは32ビット版Windows向けなので、メモリがいくらあっても2GBまでしか使えない。
これは、そもそも32ビット版Windowsが最大でも4GB(実質3GB)までしか対応していないので、どうしようもない部分がある。
つまり、AviUtl自体が高解像度・長時間動画の編集には向いていないということ。
具体的な対処法
AviUtlの「システムの設定」を変更。
最大画像サイズ、最大フレーム数を下げる
実際には、低い解像度・短い時間の動画しか編集しないとしても、ここで設定された値が使われる可能性があるという前提で、AviUtlがそれに見合ったメモリを確保してしまう。
つまり、ものすごい無駄。
高い解像度・長い時間の動画を編集する可能性がある場合でも、そのときに設定を変更すればいいだけの話なので、常時メモリを無駄づかいするような設定はやめよう。
最大画像サイズ
これはプロジェクトのサイズのことではなく、読み込む画像・動画のサイズのこと。
そのため、プロジェクトのサイズが1280×720であっても、読み込もうとする動画が1920×1080であったりすると、読み込みに失敗してしまう。
ただ、プロジェクトのサイズを超える画像や動画が必要になることはめったにないはずなので、ほとんどの場合、気にする必要はないだろう。
そうしたものを読み込みたいときでも、そのときに対象ファイルをあらかじめ縮小しておけばいい話なので、やはり最大画像サイズは小さめで十分。
最大フレーム数
30fpsの場合10分で18000フレームになり、60fpsの場合はその倍の36000フレームになる。
つまり、YouTubeでよくある10分前後の動画しかつくる予定がないのなら、40000~60000フレームで十分すぎるくらいということになる。
キャッシュフレーム数を下げる
キャッシュフレーム数とは、編集画面で動画をシークする(編集位置を移動させる)ときに事前に読み込んでおくフレーム数のこと。
これが大きいほどスムーズにシークできるが、その分メモリをくう。
あまり頻繁にシークしない、そもそもシーク時の読み込み処理が気にならないのなら、8くらいの低い値でも特に問題はないはずだ。
64ビット環境限定:LargeAddressAwareを有効にする
上記のとおりAviUtlは32ビットソフトウェアでメモリを2GBまでしか対応できないが、このオプションを有効にすることで最大4GBまで使えるようになる。
これはそもそもWindowsの仕様で、64ビット対応ソフトウェアならばデフォルトでオンになっているもの。
未確認情報:サイズの変更を「なし」に
サイズの変更を「なし」に設定すると改善されるという情報も一部であるようだが、こちらではその理由や実際の効果を確認することはできなかった。
AviUtl本体のメニューツールバー >設定 >サイズの変更
最後の手段:分割エンコード
上記を一通り試してもダメな場合、ハードウェアそのものをアップグレードするか、分割エンコードするしかない。
ひとつのプロジェクトを短く切り分けてそれぞれ別のプロジェクトとし、別々にエンコードして、他の動画編集ソフトやエンコーダーを利用して最終的にひとつのファイルに連結する。
面倒ではあるが、一番確実な方法でもある。
* 音ズレを直す方法についてはこちら。
[blogcard url="http://site.oukasei.com/?p=2192″]