Web Audio API を使用すると、AV 同期を適切に行うことができます。
AudioContext
インスタンスの outputLatency
プロパティは、オーディオ ハードウェアの出力レイテンシ(Bluetooth イヤフォンや外部 USB オーディオ インターフェースなど)の推定を提供します。このプロパティは次のような場合に便利です。
- 既存の音声マテリアルと新しく録音された素材を同期します。(音楽制作の場合)
- ウェブオーディオの出力と他のメディア(動画や MIDI の再生など)を同期します。
この WebCodecs デモ(ソース)では、WebCodecs API を使用して MediaStream
を未加工の動画データと音声データにデコードし、オーディオ ワークレットから取得した音声データを使用して HTML <canvas>
要素に再生します。outputLatency
プロパティを使用すると、特定の音声タイムスタンプがユーザーの耳に届いているタイミングを判断し、それに合わせて動画フレームを適切にペイントできます。
実際に試してみて、お気に入りの Bluetooth ヘッドセットで動画を再生し(⏎)、鳥(を提供)を待つ(上記参照)、チェックボックス(CHECK️)を切り替えて、音声の再生の変化を確認します。合計出力レイテンシの値はリアルタイムで更新されます。
AudioContext outputLatency
ヒーロー画像(作成者: Wahid Khene、Unsplash)