NDIで音ズレ・タイムコードズレが起きる「本当の理由」を知っているか?
本番収録の最中、スイッチャーのモニターを見ていて「あれ、口の動きと声がわずかにズレている」と感じた経験はないだろうか。

ケーブルを差し直す。ソフトウェアを再起動する。NDIのバージョンを疑う。だが、それでも解決しない。
IP伝送が普及し、NDI対応機材が現場に入り込んできた今、この「なんとなく合っていない」という感覚で現場を乗り切っているプロが実際に多い。ここで一つ確認したい数字がある。

NDIの時間管理は、100ナノ秒(0.0000001秒)単位で設計されている。 つまり1秒は10,000,000カウントという精度だ。これは放送規格として十分な分解能を持つ。にもかかわらず、現場で「なんとなくズレる」現象が起きるのはなぜか。
答えは「精度が高い設計」と「現場での運用」の間にある、3つの構造的ギャップに起因している。

一つはSDKの設計思想から来るもの。もう一つはネットワークの物理的特性から来るもの。そして3つ目は、多くの人が見落としがちな送信側の責任範囲の問題だ。
さらに見逃してはならない事実がある。NDI 6.3.0以前のバージョンを使い続けている場合、59.94fpsという端数フレームレートの処理で、24時間あたり0.173秒(約173ミリ秒)のドリフトが数学的に発生する。これは設定ミスではない。アーキテクチャ上の仕様だ。
0.173秒という数字をピンとこない人のために換算しておこう。30fpsの映像なら、約5.2フレーム分のズレが1日かけて積み上がる計算になる(0.173秒 ÷ 1/30秒 ≒ 5.2フレーム)。24時間ノンストップで運用するブロードキャストや、長時間のイベント収録では、これは無視できない誤差だ。
この問題に対してNDI 6.3以降は解法を実装している。しかし、そのアーキテクチャの意味を理解していなければ、どのバージョンを使っても正しく運用できない。

この記事では、音声と映像の同期を担う4つのAPIと2種類の時間管理概念を、開発者向けドキュメントの一次情報に基づいて解説する。送信側・受信側それぞれで「誰が・何を・いつ責任を持つか」を整理すれば、現場での判断が根拠を持って変わってくる。

NDIを「なんとなく使える道具」から「設計思想を理解した上で制御できる技術」に変えたいなら、この先有料部分を読んでほしい。



コメント