フレームレートとは、動画が1秒間に表示する静止画像(フレーム)の数のことです。単位は 1秒あたりのフレーム数で、「fps」と表記します。技術規格では「フレーム周波数」と呼ばれることもあります。
動画ファイルでは、フレームレートは動画ストリームを表すメタデータ値です。25 fps の場合、各フレームは 1秒の 1\/25、つまり 40ミリ秒のあいだ画面に表示されます。
どのファイルがそれを持っているか
MP4、MOV、MKV、WebM、AVI、WMV、FLV などの動画形式は、フレームレートを保持できます。各形式は、それぞれ独自の方法でこの値を保存します。
- MP4 と MOV: time-to-sample テーブルに、同じ長さのフレームのまとまりが一覧されます。ExifTool は、このテーブルから平均値として
VideoFrameRateを計算します。一部の MP4 ファイルには、VideoAvgFrameRateやVideoMaxFrameRateなどのタグに平均レートと最大レートも保存されています。 - MKV:
DefaultDurationフィールドには、1フレームあたりの時間がナノ秒で保存されます。FrameRateフィールドは情報用に使われるだけです。 - WebM: この形式は Matroska のサブセットであり、
DefaultDurationも使用できます。WebM ガイドラインでは、FrameRateは廃止予定とされています。 - AVI: ストリームヘッダー内の rate を scale で割った値がフレームレートです。
- WMV と FLV: メタデータにフレームレートのタグを含めることができます。
音声ストリームには、この種類のフレームレートはありません。FFmpeg の ffprobe は、その値として 0/0 を表示します。
値の見え方
レポートでは、フレームレートが 29.97 のような小数、または 25/1 のような分数で表示されることがあります。分数 25/1 は、1秒間に25フレームという意味です。レートが整数でない場合でも、分数であれば値を正確に表せます。
代表的な値は次のとおりです。
24/1: 24 fps、映画フィルムで一般的なレートです24000/1001: 約 23.976 fps で、FFmpeg ではntsc-filmと呼ばれます25/1: 25 fps で、FFmpeg ではpalと呼ばれます30000/1001: 約 29.97 fps で、FFmpeg ではntscと呼ばれます50と60: YouTube によると、動画アップロードで一般的なレートです120: 典型的な値ではなく上限値です。超高精細テレビ向けの ITU 標準における最大レートです。
コンスタントフレームレートと可変フレームレート
フレームレートが一定の場合、すべてのフレームの表示時間は同じです。可変フレームレートの場合は、動画の再生中にフレーム間の時間が変化します。
FFmpeg の ffprobe には 2つのフィールドがあります。avg_frame_rate は平均レートで、r_frame_rate は基準レートです。基準レートは、すべてのタイムスタンプを正確に表せる最も低いレートであり、FFmpeg のドキュメントでは推定値と説明されています。
たとえば、フレームの長さが 1\/25 秒または 1\/50 秒のいずれかであれば、r_frame_rate は 50/1 です。平均値はこれより低くなるため、この2つのフィールドは異なります。タイムスタンプはタイムベースを単位としてカウントされます。
値の由来
録画された動画は、録画時にフレームレートが決まります。エンコーダーは、動画を小さくするためにフレームを削除するなどして、後からフレームレートを変更できます。
インターレース動画では、異なる数値が表示される場合があります。この動画では、Apple の AVFoundation フレームワークはフレームレートではなくフィールドレートを報告します。
それが重要な理由
フレームレートは主に、動きがどれだけ滑らかに見えるかに影響します。レートが高いほど動きは滑らかになりますが、その効果はレートが高くなるほど小さくなります。1秒あたり約12フレームを下回ると、動きではなく連続した静止画として見えてしまいます。
24 fps 以上であれば、一般的に動きは滑らかに見え、30 fps や 60 fps が目標値として適しています。レートが高いほど、エンコーダーがレートを下げないかぎり圧縮後のファイルサイズは大きくなります。そのため、60 fps の方が 30 fps より滑らかに見えますが、ファイルサイズも増加します。
YouTube では、撮影時と同じフレームレートで動画をアップロードするよう求めています。フレームレートが一定であれば、そのレートに再生時間を掛けるとフレーム数になります。たとえば 4秒間を 25 fps にすると、フレーム数は 100 になります。