レジェメントのブロマガ

VFR→CFR の変換はAviUtlでしよう / 動画コンテナに入るコーデック調査&一覧

2020/07/12 23:43 投稿

  • タグ:
  • AviUtl
  • 動画編集
  • 音ズレ
  • コンテナ
  • コーデック
  • エンコード
  • VFR
  • CFR

 レジェメントです。動画関係で色々やっている間に分かったことなどがあるので、他の動画投稿者の方に少しでも力になればと思い、ここに載せておきます。


キャプチャした動画はAviUtlでCFRにしよう

 解説動画などを除き、ほとんどの動画は "撮影or録画した動画" が基になって作られていると思います。ゲームで言うと、ゲーム機でのプレイはHDMIレコーダーで、iPhoneでのプレイはiOSの画面収録機能で、PCでのプレイはGameDVRで録画して、それを編集します。
 で、AviUtlで編集する時は、事前に "録画した動画をVFRからCFRへ変換" しなければなりません。動画の映像がパラパラ漫画の原理なのはご存知かと思いますが、先ほどの例のような録画は「映像から一枚一枚リアルタイムで描き起こしている」ので、よく言う "1秒に30枚(30fps)" や "1秒に60枚(60fps)" にピッタリなりません。これがVFRです。逆にピッタリな動画をCFRと言います。ただ単に再生するだけならVFRでも問題無いのですが、編集の時は "1枚の時間" がキーになるため、それがピッタリでないVFRはカット編集がズレたりする原因になります。

 というわけで、とにかく「動画編集する前に、キャプチャした動画をVFRからCFRへ変換しなければならない」のですが、動画を変換するということはもちろん音ズレが発生しかねません。私は今まで "FFmpeg" を使って録画後の.mp4をCFRにしていました。しかし、試してみるとなんと約0.1秒という明らかに気付く音ズレが生じていました。・・・なんてこと。

 AviUtlとAudacityを使って色々調べた結果、「AviUtlで、拡張編集にドロップしてVFR動画で新規にプロジェクトを開いて、L-SMASHで読み込ませて、x264guiExで音声をqaacのALACかAAC(音声カット)にして1pass出力する」ことで、音ズレ無しでCFRにすることができました。AviUtlの設定のしかたはこちら。ただし、AAC(音声カット)は音声カット故に約1/1000秒のズレが生じます。
 とりあえずこの方法を使えば音ズレが生じないはずです。心配な方はやってみてください。


コンテナファイルのコーデック対応を調べてみた

 ".mp4"や".avi"などのコンテナファイルは、映像や音声の入れ物になります。で、以前.mp4にh264+FLACを入れようとしたのですが、.mp4はFLACに対応しておらず入れられませんでした。このように、コンテナそれぞれで入れられるコーデックは違います。


 というわけで各コンテナと各コーデックのマトリックス図を作りました。…正確には、数年前に作って忘れていたのを引っ張り出しました。多分合っているはずです。
 対応していれば◯、コンテナの主なコーデックなら色が付いています。参考にどうぞ。



 今回の記事はこんな感じです。実は他にも「AviUtlで仕上げのエンコードをする際に音ズレが生じる」問題と奮闘してたりもしますが、ほとんどの方は気にならないと思うので、また機会があれば紹介したいと思います。


コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事