AviUtlの音ズレを確実に直す方法:正確な解説[動画編集ソフト]

2019 年 12 月 4 日

ここでは、AviUtlで読み込んだ可変フレームレート(VFR)動画の音ズレを直す方法を紹介。

やり方

動画ファイルの平均フレームレートをチェック

以下では、標準的なDirectShow File ReaderとL-SMASHの場合について説明するが、まずどんな場合でも、元の動画ファイルの平均フレームレートを調べる必要がある。

そのためにもっとも手っ取り早いのが「MediaInfo」を使うこと。

該当ファイルの右クリックメニューから簡単に詳細な動画情報をチェックすることができる。

平均フレームレートは「ビデオ」の「フレームレート」に記載されている。

DirectShow File Reader

入力プラグインの設定画面を開く。

本体ツールバーのメニュー「ファイル」
>環境設定
>入力プラグインの設定
>DirectShow File Readerの設定

「フレームレート設定」の「指定値を使用する」に平均フレームレートをそのまま指定する

例:29.378fps => 29.378

L-SMASH

入力プラグインの設定画面を開く。

本体ツールバーのメニュー「ファイル」
>環境設定
>入力プラグインの設定
>L-SMASH Works File Readerの設定

「VFR -> CFR」のチェックボックスをオンにし、平均フレームレートを1000倍した値を左に、右に「1000」を指定する

例:29.378fps => 29378 / 1000

プロジェクトファイルの再読み込み

いちいち動画ファイルを再読み込みしたり、AviUtlを再起動したりしなくても、プロジェクトファイルをいったん閉じて再度開けば、適用した設定ですべての動画が再読み込みされる。

これで、大半の音ズレは解消されるはず。

異なるフレームレートのVFR動画を複数読み込みたい場合

特に設定しなくても音ズレが起きない場合もあるが、こればっかりは素直にVFRに対応した他のエディタを使うか、どうしてもAviUtlでやりたいという場合は、各動画をいったん固定フレームレート(CFR)で再エンコードするしかない。

AviUtlで該当ファイルをH.264のLosslessなどで出力するか、Handbrakeのようなエンコード用のソフトウェアを使おう。

注意点

プロジェクトのフレームレートは関係ない

よく勘違いされるが、どの入力プラグインであってもAviUtlプロジェクト自体のフレームレートは関係ない。

あくまで読み込みファイルの平均フレームレートを指定する必要がある。

平均フレームレートが30fpsや29.97fpsといった標準的な値ならば、特に設定していなくても問題なく読み込めるようだが、そこからずれていると上記のような処理が必要になる。

ほとんどの場合、音声側の問題ではない。

入力プラグインの優先順位

DirectShow File ReaderとL-SMASH Works File Readerのどちらでも対応している動画形式の場合、AviUtl本体で指定する読み込み時の優先順位が重要になる。

本体ツールバーのメニュー「ファイル」
>環境設定
>入力プラグイン優先度の設定

上位のもので先に読み込まれることになる。

どちらで対応されるかあらかじめわかっている場合は、片方だけフレームレートの設定を変更すればいい。

使われる入力プラグインの確認方法

該当動画ファイルを拡張編集エディタではなくAviUtl本体ウィンドウで読み込む

「ファイル」などのメニューがあるツールバーのついたウィンドウのこと。

「ファイル>開く」でダイアログからそのファイルを指定するか、AviUtl本体ウィンドウに直接ドラッグ&ドロップする。

そのあと、ツールバーメニューの「その他>ファイルの情報」で表示されるダイアログの「ファイル制御」に、実際に使われた入力プラグインの名前が書かれている。

プロジェクトごとに設定し直す必要がある

上記の設定は、プロジェクト単位ではない

グローバルに=すべてのプロジェクトに影響を与えるため、平均フレームレートの異なる別の動画を使うプロジェクトでは、いちいち設定し直さなければならない。

平均フレームレートが標準的ならばデフォルトの設定に戻し、また違った平均フレームレートならばその指定をし直す必要がある。

解説

フレームレートとは

動画の一定時間内におけるフレーム数=コマ数のこと。

アニメやパラパラ漫画でいう、ひとつひとつのイラスト(コマ)の数のことだ。

これが大きいほど動画内の動きが滑らかになるが、一方で動画ファイルのサイズは大きくなり、再生時の負荷も増してしまう。

単位は1秒あたりのフレーム数で表記し、アルファベットではfps (frame per second)と書く。

昔から、60fps、30fps、29.97fpsが主流。

可変フレームレートとは

可変フレームレート=VFR (Variable Frame Rate) とは、動画内の特定範囲によってフレームレートが異なる動画のこと。

基本的に動きの激しいところでフレームレートを上げ、静止画のようにまったく動きのないところでは1fps未満まで下げることもある。

単に動画の質、特に動きの質を上げたいなら、単純に全体のフレームレートを高くすればいいのだが、そうすると今度はファイルサイズが大きくなるなどの弊害があるので、この可変フレームレートの仕組みがある。

原因と対応

そもそも、AviUtl自体がVFRに対応していないためこのようなことが起こる。

そのせいで、平均フレームレートが30/29.97/60fpsといった標準的な値からずれていると、動画の後ろのほうになればなるほど音ズレが大きくなってしまうらしい。

要するに、AviUtl(というより入力プラグイン)にあらかじめ平均フレームレートを教えてやればいいということになる。

L-SMASHの値の指定

「30000 / 1001」などとなっているのは、フレームレートの昔からある表記方法。

ちなみにこの場合は、29.97fpsになる。

この値は可変フレームレートの動画の平均フレームレートが標準的な値からずれているものを読み込むために指定するのだから、当然「30000 / 1000」であるとか「60000 / 1000
」のようなきれいな値ではなく、上記のとおり読み込み対象の動画の平均フレームレートを1000倍したものを指定する必要がある。

たとえば、平均フレームレートが29.451fpsならば「29451 / 1000」と指定する。

ここが勘違いしやすいポイント。

VFR動画の劣化を軽減する方法

実は上記の方法だと、プロジェクトのフレームレートが読み込む動画の平均フレームレートより高い場合、AviUtlに読み込まれた動画は元のVFR動画より劣化してしまう。

たとえば、プロジェクトでは60fps、元の動画の平均フレームレートが29.337fps、最大フレームレートが72fpsのものを平均フレームレートに合わせて読み込んでしまうと、動画内の29.337fps以上の部分におけるフレームが端折られることになる。

つまり、せっかく高クオリティになっている部分が活かせない。

そういう場合は、平均フレームレートを2倍/4倍するといい。

上記の例では、DirectShow File Readerだと「58.674」、L-SMASHだと「58674 / 10000」と指定する。