タイムコードとフレームレートの小数点

 TASCAM DR-701D」の紹介やその後DR-701Dとの同期収録の話を書くにあたって、タイムコードについてまとめておいた方が良いのではと思い、フレームレートやタイムコードについて記載します。

タイムコード

 動画映像は複数の静止画の連続です。編集時にはこの連続した静止画、つまりフレームをどこからどこまで使うかを決めていきます。複数のカメラで同時に撮影する、あるいは音声を別に録音するといった場合に、AカメラのどのフレームとBカメラのどのフレームが同一時刻のものか、音声はどの部分が映像のどのフレームに一致するのかが判らないと、編集時の映像や音声のタイミング合わせは大変な作業になってしまいます。そこで、映像のフレーム1枚づつにタイムコードという番地を割り当てる方法が考えられました。

図 v01_fig_01
映像や音声に目印がないと、複数の映像や音声の位置を合わせる基準がない

 「番地」といっても住所のような番号ルールではなく、時間軸に対してフレームの位置を明確にするのが目的なので、時間を元にした番地が割り振られています。時間、分、秒までは私たちが生活する時間の単位と同じです。1秒以下については、1秒間のフレーム数を連番にして割り当てています。1秒間に30フレームの映像であれば、00から29までのフレーム番号を割り当て、1秒進むごとに00に戻ります。結果的に、一つ一つのフレームには「12時25分30秒09フレーム」といった数字が割り当てられ、「12:25:30:09」と表記します。

図 v01_fig_02
タイムコードを記録することで、複数のカメラや録音機で記録された素材がそれぞれ何処に対応するのかを区別できる

fps フレームレート

 fpsはフレーム・パー・セカンドの頭文字をとったもので、frame per(/) second=フレーム/秒=1秒間のフレーム数を表します。fpsのことをフレームレートなどと呼びます。
 映画は1秒間に24フレームの写真を撮影・映写します。初期のサイレント映画の頃はもう少し少ないフレーム数だったのですが、サウンドが付くようになって24fpsになりました。テレビは、アメリカや日本などで使われているNTSC方式の場合、白黒テレビ時代は1秒間に30フレームの映像を扱う30fpsでした。

1/1000長い時間

 白黒テレビからカラーテレビに方式変更する際に、フレームレートが30フレームから29.97フレームに変更されました。これは、テレビ映像をカラー化するにあたって色の基準になるカラーバーストという信号を組み込むことになったためです。デジタル信号と違いアナログ信号ですから、追加の情報を割り込ませると伝送時間や記録・表示時間にそのまま影響が出てきます。
 カラーバースト信号の長さは、白黒テレビの走査線1本の1/1000ほどの長さです。この信号を各走査線の先頭に割り込ませたために、走査線1本の長さが1/1000だけ長く、つまり1.001倍になりました。その結果、1フレームの表示時間は白黒テレビ方式よりも1.001倍になり、1/30秒ではなく1.001/30秒となりました。1フレームの表示時間が長くなるということは、本来ならば1秒間に表示される30フレームの表示時間も1.001秒と0.001秒長くなります。そのため、実際の1秒間に表示できるフレーム数は0.001秒分に相当する0.03フレームだけ少なくなり29.97フレーム、つまり29.97fpsとなります。

図 v01_fig_03
1/1000づつ長くなったフレームが1秒分集まったとき、実際の1秒間に収まるのは29.97フレームとなる

 この小数点を含むフレームレートは、24fpsの映画をテレビに変換する場合などでも補正する必要が生じ、24fpsは23.976fps(小数点以下3桁を四捨五入して23.98と表記するケースが多いです)にといった具合にNTSCカラーテレビ方式を採用した国々では様々な場面で1フレームの長さが1.001倍長くなりました。
 全てはテレビをカラー映像化するためのカラーバースト信号を組み込んだためです。デジタル放送に変更する際などに30fpsに統一しても良かったのでしょうが、過去の29.97fps映像を30fpsに変換すると再生時間が僅かに変わってしまうのを避けたためか、ズルズルとややっこしいフレームレートを使い続けることになっています。

ドロップフレーム

 29.97fpsのビデオ映像の1フレームづつにタイムコードを割り当てたとき、30フレームで1秒づつ増えるようにカウントを続けると、1フレームの長さが実際の時間に対して1.001倍長いので、1000フレームで1フレーム分多くなってしまいます。この誤差はやがて広がり、実際の時間に対して1時間で108フレーム多くなります。29.97fpsのフレームレートで108フレームは、3秒18フレームです。この誤差を補正するために、適当なタイミングでタイムコードのカウントを間引きする方法をとったのがドロップフレーム方式で、「Drop Frame」の頭文字をとって「DF」と記載します。
 29.97fpsの場合、ドロップフレーム方式では各分の0フレームと1フレームを飛ばしてカウントします。ただし、各分の一桁が0のときはカウントを飛ばしません。つまり、0分、10分、20分、30分、40分、50分丁度ではフレームのカウントを飛ばさず、それ以外の各分の一桁が1から9のときは2フレームづつカウントを飛ばします。1時間の内で各分の一桁が1から9となるのは、0分代から50分代まで6回繰り返すので9×6と54回カウントを飛ばします。2フレームづつ間引くの1時間で54回繰り返すので、合計108フレーム間引くことになり誤差が補正されます。59.94fpsの場合は、同様のルールで4フレームづつ間引くことで補正し、1時間では216フレーム間引きます
 ドロップフレーム方式でのカウントによって実際の時間とタイムコードの誤差は補正されますが、ドロップフレーム方式でカウントされるフレームは実際の時間よりも1.001倍ゆっくりと進む時間の尺度(タイムスケール)でカウントされています。そのため、ドロップフレーム方式で修正されるのはタイムコードの値だけで、1秒間に収まるフレーム数が29.97フレームなど0.1%少ないフレーム数であることは変わりません。また、タイムコードのカウントを間引いた修正では29.97fpsの場合、1桁が1分となる直前に誤差が最大の3.6フレーム近くになりますが、そこは目を瞑っていることになります。
 このカウント方式の場合、具体的には00:00:59:29の次が00:01:00:02のようにカウントされます。なお、編集ソフトではドロップフレームでのタイムカウントを区別するために、時間表記の区切り記号に使う「:」を「;」に変更している場合がしばしばあります。

ノンドロップフレーム

 ドロップフレームのような補正を行わないのがノンドロップフレーム方式です。「Non Drop Frame」の頭文字をとって「NDF」と記載します。ドロップフレームの項で計算したように、29.97fpsのフレームレートの場合はNDF方式で1時間カウントしたとき、実際の時間に比べて108フレーム多くカウントすることになります。つまり29.97fpsのタイムコードが1時間カウントしたとき、実際の時間は1時間3秒18フレーム(1時間3.6秒)経過しています。これは29.97fpsでのカウントが実際の時間よりも1.001倍ゆっくりと経過しているためで、実際の時間が1時間経過したとき、29.97fpsNDFのタイムコードは59分56秒12フレームしかカウントしていません。

整数のフレームレートと小数点の付くフレームレート

 フィルム映画の制作でもタイムコードは利用されています。撮影から映写までフィルムを使った映画の場合は、小数点の付かないきっかり24fpsでの運用が中心です。ただし、デジタル機器を多用した映画制作の場合は、使用する機材に合わせて24fpsや23.976fpsを使い分けるのだと思います。また、ヨーロッパなどで多く採用されているテレビ方式のPALでは、フレームレートは25fpsと整数です。
 整数で表されるフレームレートは実際の時間とのズレがない、ドロップフレームという考え方のない方式です。一方で、小数点の付くフレームレートを採用する映像方式は、実際の時間よりも1.001倍ゆっくりと進むタイムスケールで進行する方式で、ドロップフレームという考え方を併用して実際の時間とのすり合わせをしています。この時、「fps」の「s」つまり「秒」は実際の時間の長さを表し、それに対して「f」、つまり「フレーム」の長さは1.001倍長いタイムスケールでの1フレームの長さを表しています。

フリーランとレックラン

 タイムコードの記録方式にはフリーラン(Free Run)とレックラン(Rec Run)という方式があります。これは、NDFとDFのようにカウント方法の違いではなく、記録時にどのように時計を進めるかといった違いです。
 レックラン方式は、レック(Rec)、つまりレコード(Record)するときに時計を進める(Run)という意味です。映像の記録時にのみタイムコードの時計を進めるので、撮影した素材のタイムコードは途切れることなく繋がって記録されます。
 一方のフリーラン方式は、レック状態に関わらず常にタイムコードの時計が進む方式です。タイムコードを実際の時刻に設定した場合は、常に撮影した時刻のタイムコードが記録されます。ただし、29.97fpsのように1.001倍ゆっくりと進むタイムスケールのフレームレートの場合、NDFでのカウント方法だとタイムコードの時刻は実際の時刻から少しづつ遅れていきます。また、撮影した素材のタイムコードは、カメラを止めるごとに途切れ、飛び飛びになります。
 複数の機材で収録する場合にタイムコードで同期をとるには、フリーラン方式でタイムコードを記録します。そうすることで、複数の機材で記録した素材には、それぞれに同一時刻という基準でタイムコードが記録されるため、編集時にどの素材同士が対応するかをタイムコードを元に探すことができます。

図 v01_fig_04
カメラA、カメラB、オーディオレコーダー全てが同じ時刻を基準にタイムコードを記録することで、個々の素材の対応する位置を特定することができる

 フリーランでタイムコードを記録する場合に、個々の機材のタイムコード設定はフレームレートやDF・NDFを統一しておかないと進む時間の速さが異なってしまうため、タイムコードによる正確な同期収録はできません

まとめ

 動画の1秒間のフレーム数を表す単位を「fps」といい、fがフレーム、pがパー、sがセコンド=秒を表し、f/sと表すこともできます。
 NTSC方式の場合、白黒テレビの時代は30fps丁度だったのですが、テレビ方式をカラー化する際に色彩表現のための基準信号を追加したために1フレームの長さが1.001倍長くなり、1秒間の中に29.97フレームしか収まらなくなりました。こうしてできたのが29.97fpsという中途半端なフレームレートで、ここから派生して映画の24fpsの場合は23.976fps、高フレームレートの60fpsでは59.94fpsというフレームレートが使われます。
 29.97fpsの映像の中では1フレームの長さが1.001倍長いために、時間の進み方が1.001倍ゆっくりと進みます。そのため実際の時間から少しづつ遅れる誤差が生じます。これを補正する目的で考案されたのがドロップフレーム(DF)方式です。
 複数台の機材で同期収録をする場合は、フリーラン方式でタイムコードの記録をすることで、各機材で収録した素材の同期の基準とします。
 タイムコードによる同期収録を行うには、タイムコードを進める時計の進み具合を全ての機材で同じにする必要があります。個々の機材の時計の正確さを高めることで時計の進み具合を揃えるという方法と、時計を進めるための信号を共有することで、個々の機材の時計の進み具合を揃える方法があり、後者を「外部同期」と呼びます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です