Zum Hauptinhalt springen

3.7. Simulcast (Simulcast-Übertragung)

3.7. Simulcast (Simulcast-Übertragung)

JSEP unterstützt die Simulcast-Übertragung eines MediaStreamTrack, bei der mehrere Kodierungen des Quellenmediums im Kontext eines einzelnen "m="-Abschnitts übertragen werden können. Die aktuelle JSEP-API ist so konzipiert, dass Anwendungen simulcastete Medien senden, aber nur eine einzelne Kodierung empfangen können. Dies ermöglicht Multi-User-Szenarien, in denen jeder sendende Client mehrere Kodierungen an einen Server sendet, der dann für jeden empfangenden Client die geeignete Kodierung zum Weiterleiten auswählt.

Anwendungen fordern Unterstützung für Simulcast an, indem sie mehrere Kodierungen auf einem RtpSender konfigurieren. Bei der Generierung eines Angebots oder einer Antwort werden diese Kodierungen über SDP-Markierungen im entsprechenden "m="-Abschnitt angezeigt, wie unten beschrieben. Empfänger, die Simulcast verstehen und bereit sind, es zu empfangen, werden auch SDP-Markierungen einschließen, um ihre Unterstützung anzuzeigen, und JSEP-Endpunkte werden diese Markierungen verwenden, um zu bestimmen, ob Simulcast für einen bestimmten RtpSender zulässig ist. Wenn keine Simulcast-Unterstützung ausgehandelt wird, verwendet der RtpSender nur die erste konfigurierte Kodierung.

Beachten Sie, dass die genauen Simulcast-Parameter von der sendenden Anwendung abhängen. Während die oben genannten SDP-Markierungen bereitgestellt werden, um sicherzustellen, dass die entfernte Seite mehrere Simulcast-Kodierungen empfangen und demultiplexen kann, sind die spezifischen Auflösungen und Bitraten, die für jede Kodierung verwendet werden sollen, in JSEP eine reine Entscheidung auf der Sendeseite.

JSEP bietet derzeit keinen Mechanismus zum Konfigurieren des Empfangs von Simulcast. Dies bedeutet, dass, wenn Simulcast vom entfernten Endpunkt angeboten wird, die von einem JSEP-Endpunkt generierte Antwort keine Unterstützung für den Empfang von Simulcast anzeigt, und daher der entfernte Endpunkt nur eine einzelne Kodierung pro "m="-Abschnitt sendet.

Darüber hinaus bietet JSEP keinen Mechanismus zum Behandeln eines eingehenden Angebots, das Simulcast vom JSEP-Endpunkt anfordert. Dies bedeutet, dass das Einrichten von Simulcast in dem Fall, in dem der JSEP-Endpunkt das ursprüngliche Angebot empfängt, eine Out-of-Band-Signalisierung oder SDP-Inspektion erfordert. In dem Fall, in dem der JSEP-Endpunkt Simulcast in seinem ursprünglichen Angebot einrichtet, funktionieren jedoch alle etablierten Simulcast-Streams nach Erhalt eines eingehenden Neuangebots weiterhin. Zukünftige Versionen dieser Spezifikation können zusätzliche APIs hinzufügen, um das Szenario des eingehenden ursprünglichen Angebots zu handhaben.

Bei Verwendung von JSEP zur Übertragung mehrerer Kodierungen von einem RtpSender werden die Techniken aus [RFC8853] und [RFC8851] verwendet. Wenn mehrere Kodierungen für einen RtpSender konfiguriert wurden, enthält der "m="-Abschnitt für den RtpSender ein "a=simulcast"-Attribut, wie in [RFC8853], Abschnitt 5.1, definiert, mit einer "send"-Simulcast-Strombeschreibung, die jede gewünschte Kodierung auflistet, und keiner "recv"-Simulcast-Strombeschreibung. Der "m="-Abschnitt enthält auch ein "a=rid"-Attribut für jede Kodierung, wie in [RFC8851], Abschnitt 4, spezifiziert; die Verwendung von Einschränkungskennungen (RIDs, auch rid-ids oder RtpStreamIds genannt) ermöglicht es, die einzelnen Kodierungen zu disambiguieren, obwohl sie alle Teil desselben "m="-Abschnitts sind.