Audio- und Videowiedergabe im Web synchronisieren

Das Web Audio API ermöglicht eine ordnungsgemäße AV-Synchronisierung.

François Beaufort
François Beaufort

Das Attribut outputLatency einer AudioContext-Instanz gibt eine Schätzung der Ausgabelatenz der Audiohardware an, z. B. der von Bluetooth-Kopfhörern oder einer externen USB-Audioschnittstelle. Diese Eigenschaft ist in folgenden Fällen nützlich:

  • Synchronisieren Sie das vorhandene Audiomaterial und das neu aufgezeichnete Material. (in einem Musikproduktionsszenario)
  • Synchronisieren Sie die Web Audio-Ausgabe und andere Medien (z.B. Video- oder MIDI-Wiedergabe).

In dieser WebCodecs-Demo (Quelle) wird die WebCodecs API verwendet, um ein MediaStream in Roh-Video- und Audiodaten zu decodieren und dann mit Audiodaten aus einem Audio-Worklet in ein HTML-<canvas>-Element wiederzugeben. Mit der Eigenschaft outputLatency kann die Demo feststellen, wann ein bestimmter Audiozeitstempel das Ohr des Nutzers erreicht, und die Videoframes dann entsprechend darstellen.

Screenshot der Demo mit einem eingebetteten Video mit Audiosteuerelementen für Lautstärke, Audiozwischenspeicher, Gesamtausgabelatenz und einem Kästchen zur Verwendung von „AudioContext.outputLatenz“.

Probiere es selbst aus, spiele das Video mit deinem Lieblings-Bluetooth-Headset (ldap) ab, warte auf den Vogel (COVID-19) (siehe oben) und aktiviere das Kästchen (Ю️), um Veränderungen bei der Audiowiedergabe zu beobachten. Der Wert für die gesamte Ausgabelatenz wird in Echtzeit aktualisiert.

Latenz der AudioContext-Ausgabe

Unterstützte Browser

  • 102
  • 102
  • 70
  • x

Quelle

Hero-Image von Wahid Khene auf Unsplash