可変フレームレート(VFR)とは?スマホ動画のコマ送りがずれる理由
固定フレームレートと可変フレームレート
動画は、少しずつ違う静止画(フレーム、コマ)を次々に表示して動きを表しています。1 秒あたりのフレームの数がフレームレート(fps)です。
- 固定フレームレート(CFR): フレームの間隔が常に同じです。30 fps なら、どのフレームも 1/30 秒ずつ表示されます。
- 可変フレームレート(VFR): フレームの間隔が場面によって変わります。ある場面では 1/30 秒、別の場面では 1/24 秒、といった動画です。
動画ファイルには、フレームごとに「何秒の時点で表示するか」(表示時刻)が記録されています。可変フレームレートの動画でも、再生すると時間どおりに動くのはこのためです。「30 fps」のような値は、その動画の平均や目安の値です。
スマホの動画が可変フレームレートになる理由
スマホで撮った動画は、端末や撮影条件によっては可変フレームレートになります。よく言われる理由は次のとおりです。
- 暗い場所: 1 コマあたりの露光時間を長くして明るく写すため、フレームレートを下げることがあります。
- 処理の負荷: 手ぶれ補正や画像処理、発熱などで、一定の間隔でフレームを記録できないことがあります。
- 画面録画: スマホやパソコンの画面録画は、画面が変化したときだけフレームを記録するものがあり、可変フレームレートになりやすい方式です。
コマ送りがずれる理由
多くのプレイヤーのコマ送りは、「1 コマ = 1 ÷ フレームレート 秒」と見なして、再生位置を 1/30 秒ずつ動かしています。フレームの間隔が一定であれば正しく 1 コマずつ進みますが、可変フレームレートの動画では、次のようなことが起きます。
- フレームの間隔が 1/30 秒より長い場面では、同じコマにとどまる
- フレームの間隔が 1/30 秒より短い場面では、コマを飛ばす
- 「フレーム番号 = 時間 × フレームレート」で計算したフレーム番号が、実際のフレームの順番とずれていく
Video Inspector Pro は、動画ファイルに記録された全フレームの表示時刻(フレームの時刻表)を読み取り、「次のフレーム」「前のフレーム」の時刻へ移動します。そのため、可変フレームレートの動画でも 1 コマずつ正確に進み、フレーム番号もずれません。
自分の動画が可変フレームレートか確かめる
Video Inspector Pro に動画を読み込むと、「検出したフレームレート: 29.97 fps(可変)」のように表示されます。「(可変)」と出た場合は可変フレームレート、「(固定)」なら固定フレームレートです。このツールでは、フレームの間隔が代表的な間隔(中央値)から 5% 以上ずれている箇所が、全体のおよそ 0.5% を超える場合に「可変」と判定しています。
パソコンのソフトでは、MediaInfo などで「Frame rate mode: Variable」と表示されるかどうかでも確かめられます。
ずれを減らす撮り方・変換のしかた
- 明るい場所で撮る(暗い場所でフレームレートが下がるのを防ぐ)
- フレームレートを固定する設定がある撮影アプリ・録画ソフトでは、固定にする
- 動画編集ソフトや変換ソフト(HandBrake の「固定フレームレート」など)で、固定フレームレートの動画に書き出す
固定フレームレートに変換すると、足りないフレームは前のフレームの繰り返しで埋められ、多すぎるフレームは間引かれます。見た目の動きは変わらなくても、フレームの中身は元の動画と同じではなくなる点に注意してください。コマ送りや時間の計測だけが目的なら、変換せずに Video Inspector Pro で読み込むのが確実です。