VFRなMP4(H.264/AVC)ファイルの作成方法


VFRVriable Frame Rateの略で、日本語で言うと可変フレームレートになります。24fpsのシーンと30fpsのシーンが交互に切り替わるような構成(混合フレーム)の場合にVFRな動画を作成する必要が出てきます。MP4ファイルはVFRをサポートしているので、完全なVFRを実現できます。

x264ならAviUtlのプラグインを使用する方法もありますが、ここでは手動で分割した可逆圧縮の動画を個別にエンコードし、MP4Boxを使用して結合する方法を紹介します。漢ならやっぱり手動です!

23.976fpsの動画(Movie01.avi)と29.97fpsの動画(Movie02.avi)があると仮定すると、下記のような手順になります。

  1. それぞれの動画のAVSファイルを用意する
  2. それぞれの動画のAVSファイルにAssumeFPSですべて同一のfpsを指定する
  3. x264でエンコードするときに--fps指定しない
  4. MP4Boxで結合するときにそれぞれのファイルに実際のfpsを指定する
各AVSファイルの中身

# infile01.avs
AviSource("Movie01.avi")
AssumeFPS(29.97)
ConvertToYV12()
return last

# infile02.avs
AviSource("Movie02.avi")
AssumeFPS(29.97)
ConvertToYV12()
return last

それぞれのファイルでAssumeFPSで明示的にFPSを指定しますが、すべて同じ値を指定する必要があります。

x264のコマンド

x264.exe --level 4.2 -q 20 --cqm jvt -b 2 -o "output01.264" --threads auto --progress "infile01.avs"
x264.exe --level 4.2 -q 20 --cqm jvt -b 2 -o "output02.264" --threads auto --progress "infile02.avs"

オプションに--fpsは指定しません。--level意外のオプションは例によって適当です。出力が264(raw)出力になっていますが、mp4出力でも大丈夫だと思います。

MP4Boxのコマンド

mp4box.exe -add "output01.264":fps=23.976 -cat "output02.264":fps=29.97 -add "Movie.m4a":lang=jpn -new "Movie.mp4"

ここで各動画の正しいfpsを指定します。これでVFRなMP4が完成します。


前回 「MP4Boxの基本的な使い方
次回 「MP4ファイルのアスペクト比の指定方法


(更新日:2007/10/1)