通常、何らかの処理や伝送をしているということは、その処理や伝送による時間がかかるので、絶対に何らかの形で遅れが生じます。
例えば、音が空気中を伝わるのには300m/s程度かかります。これはスピーカーからの距離が10mだった場合には60fps換算で2フレームの遅れになります。1秒間に地球を7周半という途方も無いと思われる速度で伝わる光でさえも、地球の裏側まで到達するのに60fps換算で8フレームの遅れがあります。
音や光以外でも、カメラや伝送プロトコル、オーディオインターフェイスやビデオチャプチャボードなどには固有のレイテンシ(遅れ)があります。リアルタイムに生成された事象を使って表現をするということは、このレイテンシがある事を理解し、レイテンシとどう付き合っていくかという側面があります。
なので、どのデバイスがどの程度のレイテンシを持っているかを正しく把握することはとても大切です。
FrameDelayCalculator.tox
http://www.youtube.com/watch?v=BhZ-aNPxftE
本記事の主題ですが、映像のデバイスのレイテンシを計測するためのtoxを作りました。Githubで公開しています。
satoruhiga/TouchDesigner-FrameDelayCalculator
計測には、ネットワークやオーディオの分野でよく使われる ラウンドトリップタイム - Wikipedia と呼ばれる手法を使います。情報を出力してから入力が返ってくるまでの時間を計測する手法で、今回のtoxでは画像の輝度変化を観測値として使っています。
映像プロトコルのレイテンシを計測する
映像プロトコルのレイテンシの計測は非常に簡単です。↑ のスクリーンショットの例では NDI In/Out TOP
のレイテンシを計測するセットアップですが、toxのインプットとアウトプットをそれぞれNDI In/Out TOP
に繋ぎます。その時に、NDI Out TOP
から NDI In TOP
に正しく動画が転送されているかを確認してください。
接続が終わったら FrameDelayCalculator
の Params > Run Test
を押します。10秒間計測して、平均値が表示されます。
映像デバイスのレイテンシを計測する
カメラやビデオキャプチャデバイスのような映像機器のレイテンシ計測の時にはまず計測したいデバイスの絵が表示されているTOPを接続します。↑ の例では Video Device In TOP
を使いました。続けて、Params > Open Output Window
を押して計測用のウィンドウを表示します。
FrameDelayCalculator
のビューの中の白丸の位置のピクセルの輝度を見てフレームの輝度の立ち上がりを検出しているため、さきほど開いたウィンドウが白丸の位置にくるようにカメラの位置かウィンドウを位置を調整します。その後、Params > Run Test
を押せばレイテンシが計算されます。
フレームの情報量
NDIなど、ネットワークごしに映像データをやりとりするプロトコルの場合、通常は画像を圧縮して転送することが多いです。圧縮にもそれなりの時間がかかったり、圧縮による映像の乱れが発生することがあります。
Params > Noise Overlay
では、送出する画像にホワイトノイズを重ねることで情報量の多い(=圧縮しずらい)フレームを作り出すオプションです。プロトコルによってはホワイトノイズに近い映像だとフレームが欠けたり画質が落ちたりするので、この機能でそのような問題がないか確認します。
フレーム落ちの確認
Params > Check Frame Drop
では、動画中にフレーム落ちがないかを確認できます。
このオプションをOnにすると送出する映像にそれぞれ 60fps/30fps/15fps で動く四角の映像が乗せられます。戻ってきた映像に対して Feedback TOP
で処理を加えることでフレームが足りていなければ歯抜け状に表示されるので、フレーム落ちが視覚的にわかりやすく確認できます。
色々なデバイスのレイテンシの計測
FrameDelayCalculator
の基本的な使い方は以上です。
ツールとしては単純なものですがあとはアイディアと代数的な計算で色々なもののレイテンシが計測できます。
例えば:
- 他のPCにNDIで映像を送り、NDIで遅り戻してきた時間を計測 → (NDI In/Out * 2分のレイテンシ) + ネットワーク往復のレイテンシ
- PCの出力からHDMIキャプチャデバイスを用いた入力の時間 - 間にHDMIミキサーを挟んだ時の時間 → HDMIミキサー単体のレイテンシ
- 会場のモニタをカメラ撮影で計測したレイテンシ - 事前に計測したカメラのレイテンシ → 会場の映像システムのレイテンシ
などでしょうか。これ以外にも色々と計測できるものがあると思うので色々計測してみましょう!
Video Latency List
こちらに、作った色々なデバイスやシステムのレイテンシを投稿できるフォームを作りました。
投稿された内容はこちらのGoogleスプレッドシートにたまっていきます。
こちらも手持ちの機材はどしどし追加していくつもりですが、みなさんのお手元になんかメチャクチャ早いぞこのUSBカメラ… みたいなものがあったら是非計測して共有してみてください。
それでは、Happy Designing!