ウェブでの音声と動画の再生を同期する

Web Audio API を使用すると、AV 同期を適切に行うことができます。

フランソワ ボーフォート
François Beaufort

AudioContext インスタンスの outputLatency プロパティは、オーディオ ハードウェアの出力レイテンシ(Bluetooth イヤフォンや外部 USB オーディオ インターフェースなど)の推定を提供します。このプロパティは次のような場合に便利です。

  • 既存の音声マテリアルと新しく録音された素材を同期します。(音楽制作の場合)
  • ウェブオーディオの出力と他のメディア(動画や MIDI の再生など)を同期します。

この WebCodecs デモソース)では、WebCodecs API を使用して MediaStream を未加工の動画データと音声データにデコードし、オーディオ ワークレットから取得した音声データを使用して HTML <canvas> 要素に再生します。outputLatency プロパティを使用すると、特定の音声タイムスタンプがユーザーの耳に届いているタイミングを判断し、それに合わせて動画フレームを適切にペイントできます。

デモのスクリーンショット。音量、オーディオ バッファの健全性、総出力レイテンシ、および AudioContext.outputLatency を使用するためのチェックボックスのオーディオ コントロールを備えた埋め込み動画が表示されています。

実際に試してみて、お気に入りの Bluetooth ヘッドセットで動画を再生し(⏎)、鳥(を提供)を待つ(上記参照)、チェックボックス(CHECK️)を切り替えて、音声の再生の変化を確認します。合計出力レイテンシの値はリアルタイムで更新されます。

AudioContext outputLatency

対応ブラウザ

  • 102
  • 102
  • 70
  • x

ソース

ヒーロー画像(作成者: Wahid KheneUnsplash