HTML5-Audio-Streaming: Latenz genau messen?

Ich erstelle eine plattformübergreifende Web-App, in der Audio on-the-fly auf dem Server generiert und live zu einem Browser-Client gestreamt wird, wahrscheinlich über das HTML5-Audioelement. Im Browser werden Javascript-gesteuerte Animationen angezeigt, die genau mit dem abgespielten Audio synchronisiert werden müssen. "Präzise" bedeutet, dass Audio und Animation innerhalb einer Sekunde und hoffentlich innerhalb von 250 ms voneinander entfernt sein müssen (denken Sie an Lippensynchronisation). Aus verschiedenen Gründen kann ich Audio und Animation nicht auf dem Server ausführen und das resultierende Video nicht live streamen.

Idealerweise würde es zwischen der Audioerzeugung auf dem Server und der Audiowiedergabe im Browser keine oder nur eine geringe Latenz geben, aber meines Wissens ist die Latenz schwer zu kontrollieren und liegt wahrscheinlich im Bereich von 3 bis 7 Sekunden (Browser-, Umgebungs-) -, netz- und mondphasenabhängig). Ich kann das jedoch handhaben, wenn ich die tatsächliche Latenz im laufenden Betrieb genau messen kann, damit mein Browser weiß, wann der richtige animierte Frame angezeigt werden muss.

So muss ich die Latenz zwischen meiner Audioübertragung an den Streaming-Server (Icecast?) Und der Audioübertragung aus den Lautsprechern auf dem Computer, auf dem sich der Lautsprecher befindet, genau messen. Einige Möglichkeiten bei blauem Himmel:

Füge Metadaten zum Audio-Stream hinzu und analysiere sie aus dem wiedergegebenen Audio (ich verstehe, dass dies mit dem Standard-Audio-Element nicht möglich ist)

Fügen Sie dem Audio kurze, reine Stilleperioden hinzu und erkennen Sie sie dann im Browser (können Audioelemente die tatsächlichen Audio-Samples liefern?)

ragen Sie den Server und den Browser nach den verschiedenen Puffertiefen a

Decodieren Sie das gestreamte Audio in Javascript und greifen Sie dann auf die Metadaten zu

Hast du irgendwelche Gedanken darüber, wie ich das machen könnte?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage