Wir erstellen einen webbrowserbasierten Musikstreamingdienst, der Dateien mit separaten, synchronisierten Audiotracks streamt. Die Dateien sind grundsätzlich mp4s, aber mit einigen zusätzlichen Boxen.
Das Streaming erfolgt nach dem MPEG-DASH-Standard und hoffentlich ohne das Rad neu zu erfinden (zum Beispiel gibt es den Bindestrich .js ).
Update 160525 - Fügt weitere Hintergrundinformationen hinzu:
MPEG-DASH ist eine Voraussetzung für das Projekt, sowohl für seine Funktionen (Anpassungsfähigkeit, einfache Servereinstellungen usw.) als auch dafür, dass das Projekt, an dem ich arbeite, nur MPEG-Standards verwendet.
Das Streaming selbst ist eine On-Demand-Wiedergabe von statischen Dateien, d. h. kein Live-Streaming. Die Wiedergabe wird zwei Modi haben; ein statischer Modus, der nur die Tracks spielt, und ein interaktiver Modus, in dem der Benutzer die Lautstärke, das Panorama usw. ändern kann. Zur Zeit ist die statische Wiedergabe in Ordnung.
Nun scheint das Streaming synchronisierter Mehrspur-Audio nicht das üblichste Ding da draußen zu sein, und ich bin auf ein paar Probleme gestoßen:
MPEG-DASH scheint sich stark auf das Video-Streaming zu konzentrieren.
Gibt es Dokumente oder Richtlinien zum reinen Audio-Streaming, die ich nicht finden kann?
AFAIK, die Elemente <video>
und <audio>
unterstützen jeweils nur eine Audiospur. Sie bieten eine Menge Magie über MediaSource.addSourceBuffer()
, wobei auf die direkte Dekodierung eingehender Puffer geachtet wird.
Zwei mögliche Wege, dies zu umgehen, sind:
<audio>
-Elemente und synchronisieren Sie sie manuell AudioNode
s für jede Spur zu erstellen und sie manuell zu synchronisieren. Das bedeutet, dass wir uns um die Dekodierung kümmern müssen Gibt es andere oder bessere Möglichkeiten, mehrere synchronisierte Audiotracks zu streamen?
Der dash.js-Referenzplayer folgt den DASH-AVC / 264-Richtlinien, die meines Wissens Video-Streams adressieren und die Anzahl der gleichzeitig wiedergegebenen Audiotracks auf eins beschränken.
Es benutzt auch das HTML5 <video>
Element, was zu den Problemen in 2. oben führt.
Es enthält jedoch große Mengen an DASH-bezogenen Funktionen, wie adaptives Streaming, MPD-Manifest-Parsing usw. etc.
Ist dash.js eine gute Lösung für Multi-Track-Musik-Streaming, oder wird es ein Hack sein?
Ich bin mehr als glücklich, Fragen zu beantworten oder korrigiert zu werden, wenn ich etwas falsch verstanden habe!
Einige Antworten, die ich kenne:
Ich werde einen Kommentar hinzufügen, dass die Kombination von zwei Tracks auf der Client-Seite keine gute Idee zu sein scheint, es sei denn, es gibt Anforderungen, die Sie nicht erwähnt haben. Es macht mehr Sinn, den Mix auf der Serverseite mit ffmpeg oder ähnlichen Media Server Tools zu machen, dann müsste sich der Client nur um einen einzelnen Stream kümmern. Wenn die verschiedenen Quellenströme synchronisiert werden müssen, ist das wahrscheinlich nicht realistisch, um in JavaScript im Browser abzuziehen.
Tags und Links javascript html5-audio audio-streaming web-audio mpeg-dash