Serverseitige Zusammensetzung (Echtzeit-Streaming) - Amazon IVS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Serverseitige Zusammensetzung (Echtzeit-Streaming)

Die serverseitige Zusammensetzung verwendet einen IVS-Server, um Audio- und Videodaten von allen Teilnehmern der Stufe zu mischen und sendet dieses gemischte Video dann an einen IVS-Kanal (z. B. um ein größeres Publikum zu erreichen) oder einen S3-Bucket. Die serverseitige Zusammensetzung wird über IVS-Steuerebenen-Endpunkte in der Heimatregion der Stufe aufgerufen.

Die Übertragung oder Aufzeichnung einer Stufe mittels serverseitiger Zusammensetzung bietet zahlreiche Vorteile und ist daher eine attraktive Wahl für Benutzer, die effiziente und zuverlässige cloudbasierte Video-Workflows suchen.

Dieses Diagramm veranschaulicht, wie serverseitige Zusammensetzung funktioniert:

Übertragung einer Stufe mithilfe serverseitiger Zusammensetzung.

Vorteile

Im Vergleich zur clientseitigen Zusammensetzung bietet die serverseitige Zusammensetzung die folgenden Vorteile:

  • Reduzierte Client-Last – Bei der serverseitigen Zusammensetzung wird die Last der Verarbeitung und Kombination von Audio- und Videoquellen von einzelnen Client-Geräten auf den Server selbst verlagert. Durch die serverseitige Zusammensetzung entfällt die Anforderung, dass Client-Geräte ihre CPU- und Netzwerkressourcen für die Zusammensetzung der Anzeige und deren Übertragung an IVS verwenden. Dies bedeutet, dass Zuschauer die Übertragung ansehen können, ohne dass ihre Geräte ressourcenintensive Aufgaben erledigen müssen, was zu einer verbesserten Akkulaufzeit und einem flüssigeren Seherlebnis führen kann.

  • Gleichbleibende Qualität – Die serverseitige Zusammensetzung ermöglicht eine präzise Kontrolle über die Qualität, Auflösung und Bitrate des endgültigen Streams. Dies gewährleistet ein einheitliches Seherlebnis für alle Zuschauer, unabhängig von den Fähigkeiten ihrer einzelnen Geräte.

  • Ausfallsicherheit – Durch die Zentralisierung des Zusammensetzungsprozesses auf dem Server wird die Übertragung stabiler. Selbst wenn ein Publisher-Gerät technischen Einschränkungen oder Schwankungen unterliegt, kann sich der Server anpassen und allen Zuschauern einen reibungsloseren Stream bieten.

  • Bandbreiteneffizienz – Da der Server die Zusammensetzung übernimmt, müssen Stufen-Publisher keine zusätzliche Bandbreite für die Übertragung des Videos an IVS aufwenden.

Um eine Stufe an einen IVS-Kanal zu übertragen, können Sie alternativ die Zusammensetzung clientseitig durchführen; Weitere Informationen finden Sie unter Aktivierung mehrerer Hosts auf einem IVS-Stream im Benutzerhandbuch zum IVS-Streaming mit niedriger Latenz.

IVS-API

Die serverseitige Zusammensetzung verwendet diese wichtigen API-Elemente:

  • Mit einem EncoderConfiguration-Objekt können Sie das Format des zu generierenden Videos anpassen (Höhe, Breite, Bitrate und andere Streaming-Parameter). Sie können eine EncoderConfiguration bei jedem Aufruf des StartComposition-Endpunkts wiederverwenden.

  • Zusammensetzungs-Endpunkte verfolgen die Video-Zusammensetzung und die Ausgabe an einem IVS-Kanal.

  • StorageConfiguration verfolgt den S3-Bucket, in dem Zusammensetzungen aufgezeichnet werden.

Um die serverseitige Zusammensetzung zu verwenden, müssen Sie eine EncoderConfiguration erstellen und diese beim Aufruf des StartComposition-Endpunkts anfügen. In diesem Beispiel wird die SquareVideo EncoderConfiguration in zwei Zusammensetzungen verwendet:

Bei der serverseitigen Zusammensetzung werden zwei wichtige API-Elemente verwendet.

Vollständige Informationen finden Sie unter API-Referenz zu IVS-Echtzeit-Streaming.

Layouts

Standardmäßig verwendet das Feature für die serverseitige Zusammensetzung ein Raster-Layout, um die Teilnehmer der Stufe in gleich großen Slots anzuordnen:

Raster-Layout für die serverseitige Zusammensetzung.

Dieses Layout bietet Kunden die Möglichkeit, einen hervorgehobenen Slot zu konfigurieren und aufzurufen. Der hervorgehobene Slot befindet sich auf dem Hauptbildschirm, andere Teilnehmer werden in gleich großen Slots darunter angezeigt:

Hervorgehobenes Slot mit serverseitigem Zusammensetzungsraster.

Hinweis: Die maximale Auflösung, die von einem Stufen-Publisher bei serverseitiger Zusammensetzung unterstützt wird, beträgt 1080 p. Wenn ein Publisher Videos mit einer höheren Auflösung als 1080 p sendet, wird der Publisher als reiner Audio-Teilnehmer gerendert.

Erste Schritte

Voraussetzungen

Um die serverseitige Zusammensetzung verwenden zu können, müssen Sie über eine Stufe mit aktiven Publishern verfügen und einen IVS-Kanal und/oder einen S3-Bucket als Zusammensetzungsziel verwenden. Nachfolgend wird ein möglicher Workflow beschrieben, der EventBridge-Ereignisse verwendet, um eine Zusammensetzung zu starten, die die Stufe an einen IVS-Kanal sendet, wenn ein Teilnehmer etwas veröffentlicht. Alternativ können Sie Zusammensetzungen basierend auf Ihrer eigenen App-Logik starten und stoppen. Unter Zusammengesetzte Aufzeichnung finden Sie ein weiteres Beispiel, das die Verwendung serverseitiger Zusammensetzung zur direkten Aufzeichnung einer Phase in einem S3-Bucket demonstriert.

  1. Erstellen Sie einen IVS-Kanal. Weitere Informationen finden Sie unter Erste Schritte mit Amazon-IVS-Streaming mit niedriger Latenz.

  2. Erstellen Sie für jeden Publisher eine IVS-Stufe und Teilnehmer-Tokens.

  3. Erstellen Sie eine EncoderConfiguration.

  4. Treten Sie der Stufe bei und veröffentlichen Sie dort. (Weitere Informationen finden Sie in den Abschnitten „Veröffentlichen und Abonnieren“ der SDK-Anleitungen für Echtzeit-Streaming-Broadcasts: Web, Android und iOS.)

  5. Wenn Sie ein vom Teilnehmer veröffentlichtes EventBridge-Ereignis erhalten, rufen Sie StartComposition auf.

  6. Warten Sie einige Sekunden und sehen Sie sich die zusammengesetzte Ansicht in der Kanalwiedergabe an.

Serverseitiger Zusammensetzungs-Workflow, der EventBridge-Ereignisse verwendet, um eine Zusammensetzung zu starten, wenn ein Teilnehmer etwas veröffentlicht.

Hinweis: Eine Zusammensetzung wird nach 60 Sekunden Inaktivität von Publisher-Teilnehmern in der Stufe automatisch heruntergefahren. An diesem Punkt wird die Zusammensetzung beendet und geht in einen STOPPED-Status über. Eine Zusammensetzung wird nach einigen Minuten im STOPPED-Status automatisch gelöscht.

CLI-Anweisungen

Die Verwendung von AWS CLI ist eine Advanced Option und erfordert, dass Sie zuerst die CLI auf Ihrem Computer herunterladen und konfigurieren. Informationen zu den ersten Schritten finden Sie im Benutzerhandbuch für die AWS-Befehlszeilenschnittstelle.

Nun können Sie mit der CLI Ressourcen erstellen und verwalten. Die Zusammensetzungsendpunkte befinden sich unter dem ivs-realtime Namespace.

Erstllen der EncoderConfiguration-Ressource

Eine EncoderConfiguration ist ein Objekt, mit dem Sie das Format des generierten Videos (Höhe, Breite, Bitrate und andere Streaming-Parameter) anpassen können. Sie können eine EncoderConfiguration bei jedem Aufruf des Composition-Endpunkts wiederverwenden, wie im nächsten Schritt erläutert.

Der folgende Befehl erstellt eine EncoderConfiguration-Ressource, die serverseitige Parameter für die Videozusammensetzung wie Videobitrate, Bildrate und Auflösung konfiguriert:

aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"

Die Antwort lautet:

{ "encoderConfiguration": { "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4", "name": "MyEncoderConfig", "tags": {}, "video": { "bitrate": 2500000, "framerate": 30, "height": 720, "width": 1280 } } }

Starten einer Zusammensetzung

Erstellen Sie mithilfe des in der obigen Antwort bereitgestellten EncoderConfiguration-ARN Ihre Zusammensetzungsressource:

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]'

Die Antwort zeigt, dass die Zusammensetzung mit einem STARTING-Status erstellt wurde. Sobald die Zusammensetzung mit der Veröffentlichung der Zusammensetzung beginnt, geht der Status in ACTIVE über. (Sie können den Status anzeigen, indem Sie den Endpunkt ListCompositions oder GetComposition aufrufen.)

Sobald eine Zusammensetzung ACTIVE ist, wird die zusammengesetzte Ansicht der IVS-Stufe mithilfe von ListCompositions auf dem IVS-Kanal angezeigt:

aws ivs-realtime list-compositions

Die Antwort lautet:

{ "compositions": [ { "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP", "destinations": [ { "id": "bD9rRoN91fHU", "startTime": "2023-09-21T15:38:39+00:00", "state": "ACTIVE" } ], "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime": "2023-09-21T15:38:37+00:00", "state": "ACTIVE", "tags": {} } ] }

Hinweis: Damit die Zusammensetzung aktiv bleibt, müssen die Publisher-Teilnehmer aktiv in der Stufe veröffentlichen. Weitere Informationen finden Sie in den Abschnitten „Veröffentlichen und Abonnieren“ der SDK-Anleitungen für Echtzeit-Streaming-Broadcasts: Web, Android und iOS. Sie müssen für jeden Teilnehmer ein eigenes Stufen-Token erstellen.

Bildschirmfreigabe aktivieren

Führen Sie die folgenden Schritte aus, um ein festes Bildschirmfreigabe-Layout zu verwenden.

Erstllen der EncoderConfiguration-Ressource

Mit dem folgenden Befehl wird eine EncoderConfiguration-Ressource erstellt, die serverseitige Zusammensetzungsparameter (Video-Bitrate, Framerate und Auflösung) konfiguriert.

aws ivs-realtime create-encoder-configuration --name "test-ssc-with-screen-share" --video={bitrate=2000000,framerate=30,height=720,width=1280}

Erstellen Sie ein Stufen-Teilnehmer-Token mit einem screen-share-Attribut. Da wir screen-share als Namen des featured-Slots angeben, müssen wir ein Stufen-Token erstellen, bei dem das screen-share-Attribut auf true festgelegt ist:

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes screen-share=true

Die Antwort lautet:

{ "participantToken": { "attributes": { "screen-share": "true" }, "expirationTime": "2023-08-04T05:26:11+00:00", "participantId": "E813MFklPWLF", "token": "eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2OTExMjY3NzEsImlhdCI6MTY5MTA4MzU3MSwianRpIjoiRTgxM01Ga2xQV0xGIiwicmVzb3VyY2UiOiJhcm46YXdzOml2czp1cy1lYXN0LTE6OTI3ODEwOTY3Mjk5OnN0YWdlL3U5T2lFMjliVDdYcCIsInRvcGljIjoidTlPaUUyOWJUN1hwIiwiZXZlbnRzX3VybCI6IndzczovL3VzLWVhc3QtMS5ldmVudHMubGl2ZS12aWRlby5uZXQiLCJ3aGlwX3VybCI6Imh0dHBzOi8vYjJlYTVjMmZmMzU1Lmdsb2JhbC53aGlwLmxpdmUtdmlkZW8ubmV0IiwiYXR0cmlidXRlcyI6eyJzY3JlZW4tc2hhcmUiOiJ0cnVlIn0sImNhcGFiaWxpdGllcyI6eyJhbGxvd19wdWJsaXNoIjp0cnVlLCJhbGxvd19zdWJzY3JpYmUiOnRydWV9LCJ2ZXJzaW9uIjoiMC4zIn0.MGUCMFvMzv35O4yVzM9tIWZl7n3mmFQhleqsRSBx_G2qT2YUDlWSNg6H1vL7sAWQMeydSAIxAIvdfqt3Fh1MLiyelc9NnTjI5hL3YPKqDX6J3NDH1fksh8_5y1jztoPDy4yVA5OmtA" } }

Starten der Zusammensetzung

Um die Zusammensetzung mit dem Feature zur Bildschirmfreigabe zu starten, wird dieses Befehl verwendet:

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout "grid={featuredParticipantAttribute=screen-share}"

Die Antwort lautet:

{ "composition" : { "arn" : "arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz", "destinations" : [ { "configuration" : { "channel" : { "channelArn" : "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn" : "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO" }, "name" : "" }, "id" : "SGmgBXTULuXv", "state" : "STARTING" } ], "layout" : { "grid" : { "featuredParticipantAttribute" : "screen-share" } }, "stageArn" : "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime" : "2023-09-27T21:32:38Z", "state" : "STARTING", "tags" : { } } }

Wenn der Stufen-Teilnehmer E813MFklPWLF der Stufe beitritt, wird das Video dieses Teilnehmers im vorgestellten Slot angezeigt und alle anderen Stufen-Publishern werden unterhalb des Slots gerendert:

Starten der Zusammensetzung mithilfe des Features zur Bildschirmfreigabe.

Anhalten der Zusammensetzung

Um eine Zusammensetzung an einem beliebigen Punkt anzuhalten, rufen Sie den StopComposition-Endpunkt auf:

aws ivs-realtime stop-composition --arn arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz

Lebenszyklus einer Zusammensetzung

Verwenden Sie das folgende Diagramm, um sich mit den Statusübergänge einer Zusammensetzung vertraut zu machen. Auf einer hohen Ebene sieht der Lebenszyklus einer Zusammensetzung wie folgt aus:

  1. Eine Composition-Ressource wird erstellt, wenn der Benutzer den StartComposition-Endpunkt aufruft

  2. Sobald IVS die Zusammensetzung erfolgreich startet, wird ein EventBridge-Ereignis „Statusänderung IVS-Zusammensetzung (Sitzungsstart)“ gesendet. Einzelheiten zu Ereignissen finden Sie unter Verwenden von EventBridge mit IVS-Echtzeit-Streaming.

  3. Sobald sich eine Zusammensetzung im aktiven Status befindet, kann Folgendes passieren:

    • Benutzer hält die Zusammensetzung an – Wenn der StopComposition-Endpunkt aufgerufen wird, initiiert IVS ein ordnungsgemäßes Herunterfahren der Zusammensetzung und sendet „Zielende“-Ereignisse, gefolgt von einem „Sitzungsende“-Ereignis.

    • Zusammensetzung wird automatisch herunter gefahren – Wenn kein Teilnehmer in der IVS-Stufe aktiv veröffentlicht, wird die Zusammensetzung nach 60 Sekunden automatisch abgeschlossen und EventBridge-Ereignisse werden gesendet.

    • Zielfehler – Wenn ein Ziel unerwartet ausfällt (z. B. wenn der IVS-Kanal gelöscht wird), wechselt das Ziel in den RECONNECTING-Status und es wird ein Ereignis „Wiederverbindung zum Ziel“ gesendet. Wenn eine Wiederherstellung nicht möglich ist, versetzt IVS das Ziel in den FAILED-Status und es wird ein „Zielfehler“-Ereignis gesendet. IVS hält die Zusammensetzung aktiv, wenn mindestens eines ihrer Ziele aktiv ist.

  4. Sobald sich die Zusammensetzung im STOPPED- oder FAILED-Status befindet, wird sie nach fünf Minuten automatisch bereinigt. (Dann wird sie nicht mehr von ListCompositions oder GetComposition abgerufen.)

Lebenszyklus einer serverseitigen Zusammensetzungsressource.