VFRなMP4(H.264/AVC)ファイルの作成方法
VFRはVriable Frame Rateの略で、日本語で言うと可変フレームレートになります。24fpsのシーンと30fpsのシーンが交互に切り替わるような構成(混合フレーム)の場合にVFRな動画を作成する必要が出てきます。MP4ファイルはVFRをサポートしているので、完全なVFRを実現できます。
x264ならAviUtlのプラグインを使用する方法もありますが、ここでは手動で分割した可逆圧縮の動画を個別にエンコードし、MP4Boxを使用して結合する方法を紹介します。漢ならやっぱり手動です!
23.976fpsの動画(Movie01.avi)と29.97fpsの動画(Movie02.avi)があると仮定すると、下記のような手順になります。
- それぞれの動画のAVSファイルを用意する
- それぞれの動画のAVSファイルにAssumeFPSですべて同一のfpsを指定する
- x264でエンコードするときに--fps指定しない
- 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)