FCPでタイムコードのNDF・DF変換

 Final Cut Pro(ファイナルカットプロ 以下FCP)には、読み込んだクリップに記録されたタイムコードのNDF(ノンドロップフレーム)とDF(ドロップフレーム)とを変換する機能があるのですが、変換処理を行うとタイムコードの値が大きく変わってしまいます。値の変化の理由について考えてみました。
 なお、タイムコードについてや、タイムコードのNDF・DFについては、「タイムコードとフレームレートの小数点」も併せてご覧ください。(本文中でも、上記のページと関連のある箇所にはリンクを施してあります。必要に応じてご覧ください。)

FCPでDFとNDFを切り替え

 クリップのタイムコードのDFNDF変換は、クリップを選択して情報インスペクタウィンドウで操作します。情報インスペクタは、インスペクタウィンドウ左上の「i」ボタンをクリックで表示できます。このウィンドウの「設定」ページにある「タイムコードの表示」という項目で切り替えることができます(90_fig_01 下線部が「タイムコードの表示」項目)。
 SONYのFX30で撮影した素材をFCPへ読み込むと、NDFタイムコードがDFタイムコードとして認識されてしまう不具合があります。例えば、本来は開始タイムコードが12:44:54:22のNDFとして読み込まれるべきところ、開始タイムコードは同じ12:44:54:22であるものの、DF設定として読み込まれてしまうといった具合です。そして、このクリップに対してDF・NDFの変換機能を使うと、開始タイムコードが12:44:08:30と、45秒52フレームも異なる値になってしまいます。

FCP画面に一部加筆 90_fig_01
情報インスペクタの設定ページと「タイムコードの表示」

DF・NDF切り替え時のタイムコード変動と深夜からの時間

 先ほどの例で読み込んだクリップは、FX30を使い59.94fpsNDFで撮影した映像素材です。このフレームレートのとき、NDFとDFのカウントの差は1分で約4フレーム、10分で36フレーム、1時間で216フレームです。DF時の12:44:54:22とNDFへ変換したときの12:44:08:30の差である45秒52フレームという値はとこから来たのでしょうか。
 以前、海外の機材のマニュアルにタイムコードの説明で「深夜から」と言う文言が多用されていたのを思い出し、0時0分0秒0フレームから12時44分54秒22フレームまでカウントしたときにDFのルールで間引かれるフレーム数から来ているのではないかと考えました。

深夜からDFされるカウントを数える

 0時0分0秒0フレームから12時44分54秒22フレームまでの間に、DFのルールで間引かれるフレーム数を計算してみます。まず12時間カウントしたときにDFカウントで間引かれるフレームを数えます。フレームレートが59.94fpsのとき、DFによって間引かれるのは1時間あたり216フレームなので、12時間では12倍の2,592フレームになります。
 次は44分間に間引かれるフレームを数えます。フレームレートが59.94fpsのとき、DFでは44分間のうち0分、10分、20分、30分、40分丁度以外の各分で4フレーム間引きます。間引かれるフレーム数は、44(分)からフレームを間引かない5(分)を引いた39(分)×4(フレーム)となり、156フレームです。先ほどの12時間で間引かれるフレーム数と44分間で間引かれるフレーム数とを合計すると、2,748フレームです。
 DFとして読み込まれたときの12:44:54:22とNDFへ変換したときの12:44:08:30との差である45秒52フレームをフレーム数になおすと、2,752フレームです。上記の計算結果である2,748フレームと4フレームの誤差がありますが、2,748は12時間と44分間に間引かれるフレームを数えたものです。DF設定時のタイムコードは12:44:54:22と、あと54秒22フレームあります。
 DFカウントの法則は各分で4フレームを間引くルールです。54秒22フレームは1分間に満たないため、この間にフレームの間引きは行われません。しかし、これは便宜上のことで、実際には15秒ごとに1フレーム程度の誤差が生じています。つまり、54秒22フレームの間には、既に4フレーム近い誤差が生じていると考えられます。先ほどの2,748フレームに、この4フレームの間引き分を加えると2,752フレームとなり、DFからNDFへ変換した際に変動してしまうフレーム数と一致します。このことから、DFからNDFへ変換した時の誤差は、00:00:00:00からカウントを開始した際のDFによるフレームカウントの間引き分と一致すると考えて良さそうです。

DFからNDFへ変換時の数値変動

 DF方式でのカウントはNDF方式でのカウントに比べて、間引いたフレーム数の分だけ多くカウントが進みます。この変換では、DFタイムコードの値からその分を減算することで、NDFのカウントとしているようです。つまり、0時0分0秒0フレームから12時44分54秒22フレームまでの間にDFルールで間引かれる2,752フレームを、DF時のタイムコード12:44:54:22から減算することで、NDF時のタイムコード12:44:08:30としていると考えられます。
 ここで注意しなくてはならないのは、本来12:44:54:22は、FX30ではNDF設定で記録された値であり、DF時のタイムコードとして認識しているのはFCPの誤認であるということです。

別の計算方法

 DFで間引くフレーム数を計算してみましたが、単純に0時から12時44分54秒22フレームまでと12時44分08秒30フレームまでの総フレーム数が0.1%違いであるかを比較するのでも良いように思います。0時から12時44分54秒22フレームまでは、60fps換算で2,753,662フレームです。一方の12時44分08秒30フレームまでは2,750,910フレームです。これを比較すると、2,753,662フレームは2,750,910フレームの1.001000396倍となり、キッチリ1.001倍にはなりません
 これは、それぞれのタイムコードが比較するのにキリの良い、DFルールとして区切りの良い値でないためだと思います。前項で行ったDFによって間引きされるフレーム数のカウントでも、1分以下の間引き数について仮定的なカウントを含んでいるので、この端数はそういった1分以下の間引かれるであろう値の現れと考えて良さそうです。
 DFのフレーム間引きルールに沿って数えた方が、(恣意的な部分はあるものの、)端数の根拠について明確にできるので納得感があるように思います。

別のカメラで収録した素材の場合

 FCPでの読み込みの場合、FX30のタイムコード情報は撮影データであるmp4ファイルからではなく、同時に記録されるxmlファイルから読み込まれますFCPでのタイムコードのNDF・DF変換の方法がFX30の場合に特別なのか、つまりxmlファイルや、FCPでのxmlファイルの読み込みに原因があるのかを試す目的で、NikonのZ6で記録した映像データでもNDF・DF変換を試してみました。Z6の場合、タイムコードデータは映像データであるmovファイルに一緒に記録されています。
 Z6を使い、29.97fpsNDF形式でタイムコードを記録した素材を用意しました。この映像ファイルの開始タイムコードは17:14:24:28です。FCPで読み込むと、問題なくNDF形式として認識されます。このクリップをDF形式に変換すると17:15:27:02になり、やはりタイムコードの値が大きく変わってしまいます。NDFからDFへの変換によって生じた差は1分2秒4フレーム、フレーム数に換算すると1,864フレームです。
 FX30で撮影したファイルの場合と同様に、0時から変換前のタイムコード値である17時14分24秒28フレームまでの間に間引くフレーム数を計算してみます。このタイムコードは29.97fps設定なので、0、10、20、30、40、50分以外の各分で2フレームづつ間引くルールとなり、1時間では108フレーム間引かれます。このルールで数えると17時間の間に間引かれるのが1,836フレーム、14分間の間に間引かれるのが26フレームで、合計1,862フレームとなります。2フレーム足りませんが、変換後の17:15:27:02までには14分から15分へ1分進む際にもう1回2フレームの間引きがあるので、間引かれるフレームの総数は1,864フレームとなり、誤差分のフレーム数と一致します。先のDFからNDFへの変換での端数の扱いに比べて、今回はDFでの間引きルールに沿った形で値が一致しました。DF・NDF変換が00:00:00:00を起点に再計算されるという変換方法は、FX30の場合だけでなく、Z6で記録されたmovファイルの場合も同様と考えて良さそうです。

NDFからDFへ変換時の数値変動

 この場合は、先のFX30のタイムコード変換とは逆の、NDFからDFへの変換です。DFでのカウントは間引きを行うために、NDFでのカウントよりも多く進みます。その分をNDFのタイムコード値に加算することで、DFの値としているようです。
 つまり、0時0分0秒0フレームからDFのルールで間引かれる1,862フレームを、NDF時のタイムコード17:14:24:28に加算することで、DF時のタイムコード17:15:27:02としていると考えられます。

この変換機能が有用なケース

 クリップに記録されたタイムコードのDF・NDFを変換するとき、クリップに記録されたタイムコードのカウント方法だけを変換すると、クリップとクリップの間の時間に不整合が生じます。撮影を行った時間帯全てのカウント方法を変換するのがFCPのDF・NDF変換ととらえて良さそうです。
 例えば、実際の時間の00:00:00:00に時計を合わせた複数機器をフリーラン設定で同期収録したとき、NDFとDF設定が混在していると、NDFのタイムコードとDFのタイムコードはDFルールのカウントの間引きによって、90_fig_02のように時間と共に差が広がっていきます。こういった機器の組み合わせで収録した場合、各機器のタイムコードを00:00:00:00から開始するよう時刻合わせをして収録した素材であれば、この変換機能は役に立つでしょう。

図 90_fig_02
DFとNDFのタイムコードカウントイメージ

 しかし、タイムコードは実際の時間に合わせて記録しておいた方が何かと便利です。この変換機能に換算をスタートするタイムコード値を設定する機能があると、汎用性が増すのではと思います

FX30の場合の不都合

 Z6のようにNDFカウントのタイムコードが正しく読み込まれる場合、FCPのDF・NDFの変換機能には前項のような活用方法が考えられます。しかし、FX30の場合は、NDFタイムコードで収録したものがDFとして読み込まれてしまい、尚且つNDF時の開始タイムコードがDF時の開始タイムコードとして使われてしまいます。この時、クリップの継続時間はDFのルールでカウントされますが、読み込んだクリップが複数ある場合、クリップとクリップの間、つまりカメラを止めていた間の経過時間はNDFのルールでカウントされます。クリップのタイムコードカウントがDF、クリップ間のカウントはNDFとカウント方法が混在した状態は、他の機器で収録したクリップとの同期に不都合があります。
 そして、FCPでDFとして誤認されたFX30のタイムコードをNDFに変換したとき、本来は値自体を変換する必要はないにも関わらず、DFからNDFへの変換によってタイムコード値が減算されてしまいます。クリップの開始タイムコードの値が変化してしまっては、他の機器で収録した素材との同期はできません
 結論としては、FCPで編集する場合、FX30で同期収録する際のタイムコード設定はNDF・DFの誤認がないDF方式で設定するのが望ましいと言えます。

まとめ

 FCPにはタイムコードのNDF・DFを変換する機能があります。この変換では、素材のタイムコードを00:00:00:00を起点として再計算した値に変換するため、記録時のNDF・DFの設定違いを修正する目的に利用するには、収録時に各機器のタイムコードを00:00:00:00からスタートする設定にしないと上手く換算されません
 FX30でNDFタイムコードを記録したクリップがDFタイムコードとして誤認されてしまったものを修正するには、不要な減算処理が行われてしまうため、この機能は適しません。FCPで扱うには、FX30のタイムコード設定をDFで収録するのが望ましいと言えます。
 ただし、FX30で記録したNDFタイムコードの読み込み不具合は、他の機器と同期処理する場合に問題があるだけです。カメラで記録した映像を単に編集するだけの場合、不具合が起きることはありません

コメントを残す

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