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