Amazon IVS-Streaming-Konfiguration - Amazon IVS

Amazon IVS-Streaming-Konfiguration

Amazon Interactive Video Service (IVS) ermöglicht Entwicklern die einfache Bereitstellung von Videos mit niedriger Latenz für Zuschauer weltweit. Mit Amazon IVS müssen Streamer nur die Stream-Produktion erledigen und dann den Stream an Amazon IVS senden. Amazon IVS übernimmt die Videoverarbeitung (Aufnahme und Transcodierung), -lieferung und -wiedergabe für Zuschauer, die den Amazon IVS-Player verwenden.

Es gibt eine Fülle von Lösungen für Livestreaming. Egal, ob Sie ein Studio mit mehreren Kameras, visuellen Umschaltern, Grafik-Compositing und einer Vielzahl von Audio-Mixing-Geräten ausgestattet haben, oder Sie planen, Ihren ersten Stream von einem Smartphone aus zu starten, Sie müssen sich mit einigen der gleichen Konzepte und Codierungsparameter beschäftigen.

In diesem Dokument wird beschrieben, wie Video-Encoder konfiguriert werden, um zu Amazon IVS zu streamen. Die Zielgruppe dieses Dokuments sind Entwickler, die Streaming-Funktionalität in ihre Anwendungen einbauen möchten.

Berücksichtigen Sie, dass die reine Audioeingabe für IVS-Streaming mit niedriger Latenz nicht unterstützt wird.

Voraussetzungen

Führen Sie die Schritte unter Erste Schritte mit IVS-Streaming mit niedriger Latenz aus, um einen Kanal zu erstellen und das Streaming einzurichten. Dabei werden ein Kanal-ARN (Amazon Resource Name) und ein Stream-Schlüssel sowie URLs für die Aufnahme und Wiedergabe eines Streams zugewiesen. Sie müssen Ihre Streaming-Anwendung auf die Ingest-URL verweisen.

Bevor Sie dieses Dokument lesen, sollten Sie mit folgenden Themen vertraut sein:

Reduzierung der Latenz

Das Streaming von Amazon IVS mit niedriger Latenz ist mit den meisten Streaming-Anwendungen kompatibel und erfordert nur geringfügige Änderungen an der Konfiguration Ihrer Streaming-Anwendung. Für die geringstmögliche Latenz müssen Sie den Amazon IVS-Player verwenden. HLS-Videoplayer von Drittanbietern werden nicht unterstützt. Weitere Informationen finden Sie in der Dokumentation zum Amazon IVS Player SDK.

Gehen Sie folgendermaßen vor, um die Streaming-Anwendung für das Streaming mit geringer Latenz vorzubereiten. (Hinweis: Nicht alle diese Optionen sind in jeder Streaming-Anwendung verfügbar.)

  • Stellen Sie auf dem Video-Encoder IDR/Keyframe auf ein 2-Sekunden-Intervall (oder 1 Sekunde, für noch geringere End-zu-End-Latenz) ein.

    IDR/Keyframe wirkt sich direkt auf das Timing des Stream-Startups und die Latenz verwandter EventBridge Ereignisse (Stream-Start und Aufzeichnungsstart) aus. Wenn IDR/Keyframe 2 Sekunden beträgt, liegt die Latenzzeit für den Stream-Start bei etwa 6 bis 7 Sekunden. Wenn IDR/Keyframe 1 Sekunde beträgt, liegt die Latenzzeit für den Stream-Start bei etwa 3 bis 4 Sekunden. Ihr Video steht den Zuschauern und der automatischen Aufzeichnung in Amazon S3 erst nach der anfänglichen Latenzzeit des Stream-Startstarts zur Verfügung.

    Das kürzere Keyframe-Intervall von 1 Sekunde hat einige QoS-Kompromisse. Dies kann dazu führen, dass das adaptive Bitrate-Streaming (ABR) des Amazon IVS Players häufiger die Auflösung wechselt; die Segmentgröße ist kleiner, so dass die ABR-Prüfung häufiger erfolgt. Die Pufferung kann aufgrund eines erhöhten Auflösungswechsels zunehmen und/oder wenn das Netzwerk des Betrachters die Segmente nicht schnell genug herunterladen kann. Wägen Sie diese Kompromisse ab, wenn Sie zwischen einem Keyframe-Intervall von 1 oder 2 Sekunden entscheiden.

    Vermeiden Sie die Einstellung von IDR/Keyframe auf Werte über 5 Sekunden. Die Streamstart-Latenz ist nicht nur höher als bei Verwendung von 1 oder 2 Sekunden, sondern IVS kann auch nicht garantieren, dass jedes für die Wiedergabe generierte Segment mit einem IDR/Keyframe beginnt. Segmente, die nicht mit einem IDR/Keyframe beginnen, können zu Dekodierungsfehlern oder visuellen Verzerrungen führen, wenn Zuschauer die Wiedergabe starten oder die Darstellung ändern.

  • Falls verfügbar, stellen Sie Ihren Encoder in einer x264-Konfiguration auf Null-Latenz-Tuning ein.

  • Stellen Sie sicher, dass die Puffergröße (VBV) die durchschnittliche Bitrate (Kilobit pro Sekunde) des Streams nicht überschreitet.

Streaming-/Weiterleitungsdienste von Drittanbietern vermeiden

Es wird dringend empfohlen, keine Drittanbieterdienste zu verwenden, um Inhalte an Amazon IVS zurückzugeben oder weiterzuleiten. Das wird zu einer zusätzlichen Latenz führen. Für niedrige Latenz können Sie direkt zu Amazon IVS streamen.

Encoder-Einstellungen

Streamerfassung: Codecs und Erfassungsprotokolle

Codecs Amazon IVS unterstützt H.264 für Video und AAC (LC) für Audio.

Erfassungsprotokolle: Amazon IVS unterstützt die gängigsten Erfassungsprotokolle, die in Streaming-Software und -Hardware verwendet werden: RTMPS (Real-Time Messaging Protocol über eine TLS/SSL-Verbindung), RTMP und SRT (Secure Reliable Transport). Amazon-IVS-Streaming über RTMPS erfordert TLS-Version 1.2 oder höher.

RTMPS/RTMP

Ihr Video-Encoder muss über das RTMPS-Protokoll, das dem ausgehenden Port 443/TCP zugeordnet ist, eine Verbindung mit Amazon IVS-Ingest herstellen. Um dies sicherzustellen, geben Sie einen IVS-Erfassungsserver an, der den Port im Pfad enthält:

rtmps://<IVS-ingest-server>/<IVS-stream-key>

Beispielsweise:

rtmps://a1b2c3d4e5f6.global-contribute.live-video.net:443/app/<IVS-stream-key>

IVS-Kanäle können auch so konfiguriert werden, dass sie eine unsichere RTMP-Erfassung ermöglichen. Außer für bestimmte und verifizierte Anwendungsfälle, für die RTMP zwingend erforderlich ist, empfiehlt sich jedoch die Nutzung von RTMPS. Stellen Sie beim Streamen von RTMP sicher, dass das Protokoll auf rtmp:// eingestellt ist, und entfernen Sie den Port :443. Beispielsweise:

rtmp://a1b2c3d4e5f6.global-contribute.live-video.net/app/<IVS-stream-key>

SRT

Ihr Video-Encoder muss über das SRT-Protokoll an Port 9000 eine Verbindung mit dem Erfassungsendpunkt herstellen. Um dies sicherzustellen, geben Sie einen Erfassungsendpunkt an, der den Port und die Passphrase im Pfad enthält:

srt://<ingest-endpoint>:<port>?streamid=<stream-key>&passphrase=<passphrase>

Verwenden Sie nur eine Passphrase, wenn die unsichere Erfassung für den Kanal nicht aktiviert ist.

Beispielsweise:

srt://a1b2c3d4e5f6.srt.live-video.net:9000?streamid=sk_us-west-2_abcd1234efgh5678ijkl&passphrase=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ

Informationen zur Optimierung der SRT-Stream-Leistung finden Sie in diesem Haivision-Blog: How to Configure SRT Settings on Your Video Encoder for Optimal Performance.

Auflösung/Bitrate/FPS

Die Auflösung des Streams bestimmt weitgehend seine Bitrate und Framerate (Frames pro Sekunde oder FPS). Verwenden Sie die folgenden Richtlinien; dies sind unsere Empfehlungen. Beachten Sie, dass die unten gezeigten Auflösungen Querformat (horizontal x vertikal) sind. Umkehren Sie diese für die Ausrichtung im Hochformat.

Akzeptable Qualität (SD) 480p (852x480) Gute Qualität (HD) 720p (1280x720) Hohe Qualität (Full HD) 1080p (1920x1080)
Bitrate Bis zu 1500 Kbit/s Bis zu 4500 Kbit/s Bis zu 8500 Kbit/s
FPS 30 30 oder 60 30 oder 60
Keyframe-Intervall 2 Sekunden 2 Sekunden 2 Sekunden

Bitrate, FPS und Auflösung sind miteinander verknüpft. Die optimalen Werte hängen von den Umständen ab und können kompliziert zu bestimmen sein. Unsere beste Anleitung ist, mit den obigen Werten zu beginnen und zu experimentieren, wenn gewünscht. Das Ziel ist eine klare und reibungslose Bewegung von Videokomponenten während des Streamings und eine gute Auflösung innerhalb der verfügbaren Bandbreite. Eine Erhöhung der Bildrate und/oder Auflösung erhöht die gesamte Videoqualität, aber dies ist notwendigerweise durch die Bandbreite begrenzt.

Amazon IVS unterstützt Bildraten (Framerates) von bis zu 60 FPS (einschließlich der europäischen Standardbildraten PAL 25 und 50). Je höher die Framerate, desto besser ist die Qualität – solange eine ausreichende Bitratenbandbreite vorhanden ist. Abhängig von der Anwendung kann eine geringe Framerate gut sein, z. B. für eine Überwachungskamera.

Kanaltypen

Der Kanaltyp, der die zulässige Auflösung und Bitrate bestimmt. Wenn Sie die zulässige Eingangsauflösung oder Bitrate überschreiten, wird der Stream wahrscheinlich sofort getrennt.

Es gibt vier Kanaltypen: STANDARD, ADVANCED_SD, ADVANCED_HD und BASIC. Beim Erstellen eines Kanals ist STANDARD der Standardtyp.

Es gibt zwei Arten der Videoverarbeitung: Transkodierung und Transmuxing. Dies hängt vom Kanaltyp und davon ab, ob der Kanal für Multitrack-Videoeingang konfiguriert ist und ob der Broadcaster einen Multitrack-fähigen Client verwendet. (Multitrack-Video ist mit der API-Eigenschaft multitrackInputConfiguration des Datentyps Kanal konfiguriert.)

  • Video in den Kanälen STANDARD (ohne Multitrack-Eingang) und ADVANCED ist transkodiert: Aus der ursprünglichen Eingabe werden mehrere Qualitäten generiert, um den Zuschauern automatisch die beste Erfahrung für ihre Geräte und Netzwerkbedingungen zu bieten. Die Transkodierung ermöglicht eine höhere Wiedergabequalität bei verschiedenen Download-Geschwindigkeiten. Die Transkodierung ist die beste Option für Broadcaster mit eingeschränkter Internetverbindung auf der ersten Meile und/oder begrenzten Gerätefunktionen (z. B. Mobiltelefone statt Desktop-PCs).

  • Video in den Kanälen STANDARD (mit aktiviertem Multitrack-Eingang und Verwendung eines Multitrack-fähigen Clients durch den Broadcaster) und BASIC wird transmuxiert: Amazon IVS stellt Zuschauern die ursprüngliche Eingabe bereit. Ähnlich wie bei der Transkodierung bietet der transmuxierte Multitrack-Eingang den Zuschauern das beste Erlebnis für ihre Geräte und Netzwerkbedingungen.

Alle transkodierten Kanäle haben Voreinstellungen für die Transkodierung, die festlegen, welche Wiedergabevarianten erstellt werden. Stellen Sie sich diese als ABR-Leitern vor. Damit können Sie die verfügbare Download-Bandbreite und die Videoqualität gegeneinander abwägen, um das Seherlebnis zu optimieren.

  • STANDARD-Kanäle haben eine Standard-Voreinstellung für die Transkodierung.

  • ADVANCED-Kanäle haben zwei auswählbare Voreinstellungen für die Transkodierung:

    • Bei Beschränkte Bandbreitenbereitstellung wird für jede Qualitätsstufe eine niedrigere Bitrate als STANDARD verwendet. Verwenden Sie sie, wenn Sie eine geringe Download-Bandbreite und/oder einfache Videoinhalte haben (z. B. sprechende Köpfe).

    • Bei der Bereitstellung mit höherer Bandbreite wird für jede Qualitätsstufe eine höhere Bitrate verwendet. Verwenden Sie sie, wenn Sie eine hohe Download-Bandbreite und/oder komplexe Videoinhalte haben (z. B. Blitze und schnelle Szenenwechsel). Dies ist die Standardeinstellung.

STANDARD-Kanäle

Einzeltrack-Videoeingang

STANDARD-Kanäle sind transkodiert. Die höchste erzeugte Videoauflösung ist Full HD, 1080p. Dies ist der Standardkanaltyp.

  • Transkodierungsvoreinstellungen: Es gibt eine standardmäßige Leiter mit Transkodierungsvoreinstellungen.

  • Audio: Bei Wiedergabevarianten bis 360p wird Audio transkodiert. Für andere Wiedergabevarianten: Das Originalaudio wird weitergegeben.

Eingangsauflösung und maximale Bitrate Details der Leiter

1080p60 bei 8,5 Mbit/s

  1. Video: Quell-Pass-Through, Audio: Quell-Pass-Through

  2. Video: 720p60 bei 3,4 Mbit/s, Audio: Quell-Pass-Through

  3. Video: 480p30 bei 1,4 Mbit/s, Audio: Quell-Pass-Through

  4. Video: 360p30 bei 0,63 Mbit/s, Audio: 64 Kbit/s

  5. Video: 160p30 bei 0,23 Mbit/s, Audio: 48 Kbit/s

1080p30 bei 8,5 Mbit/s

  1. Video: Quell-Pass-Through, Audio: Quell-Pass-Through

  2. Video: 720p30 bei 2,4 Mbit/s, Audio: Quell-Pass-Through

  3. Video: 480p30 bei 1,4 Mbit/s, Audio: Quell-Pass-Through

  4. Video: 360p30 bei 0,63 Mbit/s, Audio: 64 Kbit/s

  5. Video: 160p30 bei 0,23 Mbit/s, Audio: 48 Kbit/s

Weniger als 1080p60 und mehr als 720p60 bei 8,5 Mbit/s

  1. Video: Quell-Pass-Through, Audio: Quell-Pass-Through

  2. Video: 720p60 bei 3,4 Mbit/s, Audio: Quell-Pass-Through

  3. Video: 480p30 bei 1,4 Mbit/s, Audio: Quell-Pass-Through

  4. Video: 360p30 bei 0,63 Mbit/s, Audio: 64 Kbit/s

  5. Video: 160p30 bei 0,23 Mbit/s, Audio: 48 Kbit/s

Weniger als 1080p30 und mehr als 720p30 bei 8,5 Mbit/s

  1. Video: Quell-Pass-Through, Audio: Quell-Pass-Through

  2. Video: 720p30 bei 2,4 Mbit/s, Audio: Quell-Pass-Through

  3. Video: 480p30 bei 1,4 Mbit/s, Audio: Quell-Pass-Through

  4. Video: 360p30 bei 0,63 Mbit/s, Audio: 64 Kbit/s

  5. Video: 160p30 bei 0,23 Mbit/s, Audio: 48 Kbit/s

720p60 bei 8,5 Mbit/s

  1. Video: 720p60 bei 3,4 Mbit/s, Audio: Quell-Pass-Through

  2. Video: 480p30 bei 1,4 Mbit/s, Audio: Quell-Pass-Through

  3. Video: 360p30 bei 0,63 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,23 Mbit/s, Audio: 48 Kbit/s

720p30 bei 8,5 Mbit/s

  1. Video: 720p30 bei 2,4 Mbit/s, Audio: Quell-Pass-Through

  2. Video: 480p30 bei 1,4 Mbit/s, Audio: Quell-Pass-Through

  3. Video: 360p30 bei 0,63 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,23 Mbit/s, Audio: 48 Kbit/s

Weniger als 720p30/60 und größer oder gleich 480p30/60 bei 8,5 Mbit/s

  1. Video: 480p30 bei 1,4 Mbit/s, Audio: Quell-Pass-Through

  2. Video: 360p30 bei 0,63 Mbit/s, Audio: 64 Kbit/s

  3. Video: 160p30 bei 0,23 Mbit/s, Audio: 48 Kbit/s

Multitrack-Videoeingang

STANDARD-Kanäle werden transmuxiert, wenn es sich bei dem Eingang um Multitrack-Video handelt. Die höchste erzeugte Videoauflösung ist durch die Eigenschaft multitrackInputConfiguration.maximumResolution begrenzt. Die spezifischen Wiedergabearten sind dynamisch und hängen von den System- und Umgebungsanforderungen des Broadcasters ab.

Bei allen Videowiedergaben wird für Audio Quell-Pass-Through verwendet.

ADVANCED-HD-Kanäle

ADVANCED-HD-Kanäle sind transkodiert. Die höchste erzeugte Videoauflösung ist HD, 720p.

  • Transkodierungsvoreinstellungen: Es gibt zwei auswählbare Leitern mit Transkodierungsvoreinstellungen.

  • Audio: Audio ist transkodiert.

Eingangsauflösung und maximale Bitrate Details der Leiter

720p60 bis zu 1080p60, bei 8,5 Mbit/s

Transkodierungsvoreinstellung: höhere Bandbreitenbereitstellung (Standard):

  1. Video: 720p60 bei 3 Mbit/s, Audio: 128 Kbit/s

  2. Video: 480p30 bei 1,3 Mbit/s, Audio: 128 Kbit/s

  3. Video: 360p30 bei 0,7 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,27 Mbit/s, Audio: 48 Kbit/s

  5. Nur Audio bei 64 Kbit/s

Transkodierungsvoreinstellung: beschränkte Bandbreitenbereitstellung:

  1. Video: 720p60 bei 2,2 Mbit/s, Audio: 128 Kbit/s

  2. Video: 480p30 bei 0,8 Mbit/s, Audio: 128 Kbit/s

  3. Video: 360p30 bei 0,4 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,22 Mbit/s, Audio: 48 Kbit/s

  5. Nur Audio bei 64 Kbit/s

720p30 bis zu 1080p30, bei 8,5 Mbit/s

Transkodierungsvoreinstellung: höhere Bandbreitenbereitstellung (Standard):

  1. Video: 720p30 bei 2,3 Mbit/s, Audio: 128 Kbit/s

  2. Video: 480p30 bei 1,3 Mbit/s, Audio: 128 Kbit/s

  3. Video: 360p30 bei 0,7 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,27 Mbit/s, Audio: 48 Kbit/s

  5. Nur Audio bei 64 Kbit/s

Transkodierungsvoreinstellung: beschränkte Bandbreitenbereitstellung:

  1. Video: 720p30 bei 1,9 Mbit/s, Audio: 128 Kbit/s

  2. Video: 480p30 bei 0,8 Mbit/s, Audio: 128 Kbit/s

  3. Video: 360p30 bei 0,4 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,22 Mbit/s, Audio: 48 Kbit/s

  5. Nur Audio bei 0,08 Mbit/s

Weniger als 720p30/60 und mehr als 480p30/60 bei 8,5 Mbit/s

Transkodierungsvoreinstellung: höhere Bandbreitenbereitstellung (Standard):

  1. Video: Quelle transkodiert bei 2,3 Mbit/s, Audio: 128 Kbit/s

  2. Video: 480p30 bei 1,3 Mbit/s, Audio: 128 Kbit/s

  3. Video: 360p30 bei 0,7 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,27 Mbit/s, Audio: 48 Kbit/s

  5. Nur Audio bei 64 Kbit/s

Transkodierungsvoreinstellung: beschränkte Bandbreitenbereitstellung:

  1. Video: Quelle transkodiert bei 1,9 Mbit/s, Audio: 128 Kbit/s

  2. Video: 480p30 bei 0,8 Mbit/s, Audio: 128 Kbit/s

  3. Video: 360p30 bei 0,4 Mbit/s, Audio: 64 Kbit/s

  4. Video: 160p30 bei 0,22 Mbit/s, Audio: 48 Kbit/s

  5. Nur Audio bei 64 Kbit/s

480p30/60 bei 8,5 Mbit/s

Transkodierungsvoreinstellung: höhere Bandbreitenbereitstellung (Standard):

  1. Video: 480p30 bei 1,3 Mbit/s, Audio: 128 Kbit/s

  2. Video: 360p30 bei 0,7 Mbit/s, Audio: 64 Kbit/s

  3. Video: 160p30 bei 0,27 Mbit/s, Audio: 48 Kbit/s

  4. Nur Audio bei 64 Kbit/s

Transkodierungsvoreinstellung: beschränkte Bandbreitenbereitstellung:

  1. Video: 480p30 bei 0,8 Mbit/s, Audio: 128 Kbit/s

  2. Video: 360p30 bei 0,4 Mbit/s, Audio: 64 Kbit/s

  3. Video: 160p30 bei 0,22 Mbit/s, Audio: 48 Kbit/s

  4. Nur Audio bei 64 Kbit/s

ADVANCED-SD-Kanäle

ADVANCED-SD-Kanäle sind transkodiert. Verfügbare Wiedergabevarianten sind auf die Eingangsqualität begrenzt, ohne Aufwärtskonvertierung.

  • Transkodierungsvoreinstellungen: Es gibt zwei auswählbare Leitern mit Transkodierungsvoreinstellungen.

  • Audio: Audio ist transkodiert.

Eingangsauflösung und maximale Bitrate Details der Leiter

480p30/60 bis zu 1080p30/60 bei 8,5 Mbit/s

Transkodierungsvoreinstellung: höhere Bandbreitenbereitstellung (Standard):

  1. Video: 480p30 bei 1,3 Mbit/s, Audio: 128 Kbit/s

  2. Video: 360p30 bei 0,7 Mbit/s, Audio: 64 Kbit/s

  3. Video: 160p30 bei 0,27 Mbit/s, Audio: 48 Kbit/s

  4. Nur Audio bei 64 Kbit/s

Transkodierungsvoreinstellung: beschränkte Bandbreitenbereitstellung:

  1. Video: 480p30 bei 0,8 Mbit/s, Audio: 128 Kbit/s

  2. Video: 360p30 bei 0,4 Mbit/s, Audio: 64 Kbit/s

  3. Video: 160p30 bei 0,22 Mbit/s, Audio: 48 Kbit/s

  4. Nur Audio bei 64 Kbit/s

BASIS-Kanäle

BASIC-Kanäle sind transmuxiert. Es wird eine einzige Wiedergabevariante erzeugt.

  • Transkodierungsvoreinstellungen: Nicht vorhanden

  • Audio: Audioquelldaten werden weitergeleitet.

Eingangsauflösung und maximale Bitrate Details der Leiter

Größer als 480p30/60 und kleiner oder gleich 1080p30/60 bei 3,5 Mbit/s

Parameter für Quellcodierung (keine Leiter)

480p30/60 bei 1,5 Mbit/s

Parameter für Quellcodierung (keine Leiter)

Videoeinstellungen

Wir empfehlen die folgende Einstellung: Sie sind für die meisten H.264-Videocodierungssoftware oder Hardware-APIs verfügbar.

  • Stellen Sie auf dem Video-Encoder IDR/Keyframe auf ein 2-Sekunden-Intervall (oder 1 Sekunde, für noch geringere End-zu-End-Latenz) ein.

  • H.264-Ebene: Hauptebene

  • Szenenwechsel: Aus (bevorzugt)

  • Chroma-Subbeispiel: YUV420P

  • Bevorzugte CABAC

  • ColorSpace: BT.709 (empfohlen für maximale Kompatibilität auf hochauflösenden Fernsehgeräten und Computermonitoren). Die Videotranskodierung von Amazon IVS unterstützt ColorSpace-Passthrough. Erfahrene Benutzer können andere ColorSpace- und Full-Range-Videoeinstellungen verwenden.

Audioeinstellungen

Wir unterstützen die folgenden Einstellungen:

  • Codec: AAC (LC)

  • Bitrate: 96 Kbit/s bis zu 320 Kbit/s

  • Beispielrate: 44,1 Khz oder 48 Khz (am besten passen Sie Ihren Audiofluss an)

  • Kanäle: Maximal 2 - Stereo (1: Mono oder 2: Stereo-Audiokanal-Support)

CBR verwenden, nicht VBR

Verwenden Sie immer CBR (Constant BitRate), nicht VBR (Variable BitRate), als Ratensteuerungsmethode für Encoder. CBR eignet sich besser für die Festbandbreite von Netzwerken und erzeugt eine vorhersagbarere, stabilere Videowiedergabe für Clientgeräte. Mit einer konsistenten Bitrate ist es für Zuschauer leicht, ein Qualitätsniveau auszuwählen, das ihre Verbindung im Laufe der Zeit verarbeiten kann.

Abhängig von der Komplexität der Szene kann VBR zu Bitratenspitzen führen, die zu Frame-Abfällen führen können, bevor das Video Amazon IVS erreicht und/oder in Client-Playern puffert.

Wir empfehlen dringend, nur CBR zu verwenden. Wenn Sie VBR verwenden, unterliegen Ihre Streams mehr Pufferung und Wiedergabe, die nicht reibungslos ist.

Verwenden von Progressive Signalen

Verwenden Sie progressiven Signalflüsse; vermeiden Sie Zeilensprungverfahren im Produktionsfluss und/oder Codierung. Progressive Stream-Signale ergeben eine viel bessere Wiedergabequalität, die einen ganzen Frame gleichzeitig anzeigt, wodurch jegliche Bewegungsartefakte vermieden werden, die bei Zeilensprungverfahren erzeugt werden.

Netzwerkanforderungen

Sie müssen über eine stabile Internetverbindung verfügen, die einen angemessenen, konstanten Upload-Stream aufrechterhalten kann. Eine instabile Internetverbindung könnte zu Stocken und Verzögerungen für Ihre Zuschauer führen.

Verwenden Sie kabelgebundene Verbindungen. WiFi - und LTE-Verbindungen können ungleichmäßig sein oder aufgrund schlechter QoS-/Paketwarteschlangen-Priorisierung unter Störungen oder Latenz leiden. Verlassen Sie sich, wann immer möglich, auf eine fest verkabelte Verbindung für Streams.

Planen Sie, 50% mehr Bandbreite als das erforderliche Minimum zuzuweisen. Der Overhead wird hinzugefügt, um die Bitratenschwankungen bei der Kodierung eines Videobit-Streams zu kompensieren.

Verwenden Sie ein dediziertes Internet-VLAN für die Codierung von Maschinen. Wenn Sie den Encoder in einem separaten Netzwerk halten, werden potenziell störende Auswirkungen verhindert, darunter: Verschmutzung durch Datenverkehr, Bandbreitenengpässe und schädliche Sicherheitsfaktoren.

Zuschaltbare Untertitel

IVS unterstützt Untertitel. Wenn Sie als Streamer Untertitel für Ihre Zielgruppe anbieten möchten, müssen Sie Untertiteldaten in einem akzeptierten Format übertragen, entweder in Ihrem Stream oder neben Ihrem Stream, über Ihren Video-Encoder.

Amazon IVS akzeptiert Untertitel im Format 21-CEA-708/EIA-608 (auch als 608 über 708 bezeichnet). Sie können Untertiteln über eine der folgenden Methoden übertragen:

  • CEA-708/EIA-608, eingebettet in den Videoelementarstrom, wie in ATSC A/72 (SEI user_data) beschrieben. Dieses Format ist bei Fernsehsendungs-Encodern üblich.

  • CEA-708/EIA-608 wird über RTMPS OnCaptionInfo Script/AMF0 Tag übertragen. Dieses Format ist bei Internet-Broadcast-Encodern und Medienservern wie Elemental Technologies und Wowza üblich. Die Amazon IVS Player SDKs unterstützen eine Sprache; sie unterstützen keine mehrspurige Wiedergabe von Untertiteln.

Hinweis: Die Amazon IVS Player SDKs unterstützen Beschriftungsdaten nur im CC1-NTSC-Feld 1. Sie unterstützen keine mehrspurige Wiedergabe von Untertiteln.

Bei der Übertragung über RTMPS muss die Nutzlast ein ECMA-Array mit zwei Elementpaaren enthalten:

  • Eine Zeichenfolge mit dem Namen type, welche die Zeichen 708 enthält.

  • Eine Zeichenfolge mit dem Namen data, die eine base64-codierte CEA-708/EIA-608-Nutzlast enthält.

Zum Beispiel:

00000000 12 00 00 69 00 00 00 00 00 00 00 02 00 0d 6f 6e |...i..........on| 00000010 43 61 70 74 69 6f 6e 49 6e 66 6f 08 00 00 00 02 |CaptionInfo.....| 00000020 00 04 74 79 70 65 02 00 03 37 30 38 00 04 64 61 |..type...708..da| 00000030 74 61 02 00 3c 74 51 41 78 52 30 45 35 4e 41 4e |ta..<tQAxR0E5NAN| 00000040 4c 41 50 79 55 72 76 79 55 49 50 79 52 51 50 7a |LAPyUrvyUIPyRQPz| 00000050 49 35 66 7a 73 37 50 7a 76 4c 50 77 67 56 50 7a |I5fzs7PzvLPwgVPz| 00000060 33 36 66 7a 30 34 2f 78 6f 67 50 79 55 4c 2f 38 |36fz04/xogPyUL/8| 00000070 3d 00 00 09 00 00 00 74 |=......t|

Wenn Sie den Elementar-Video-Encoder verwenden, richten Sie ihn wie folgt ein:

  • Legen Sie die Beschriftung einbetten auf „Capture 608 Field 1“ fest.

  • Einbetten von Untertiteln mit OnCaptionInfo als RTMPS-Tag in der Ausgabegruppe.

Weitere Informationen finden Sie in diesem Blogbeitrag: Hinzufügen von Untertiteln zu einem Live-Stream von Amazon IVS.

Streamen mit FFmpeg

FFmpeg ist ein kostenloses Open-Source-Projekt, das eine große Suite von Software-Bibliotheken für den Umgang mit Video-, Audio- und anderen Multimedia-Dateien und Streams umfasst. Es kann mit vielen Betriebssystemen und Geräten verwendet werden.

Weitere Informationen finden Sie FFmpeg für die Installation und weitere Informationen über FFmpeg. Verwenden Sie den neuesten statischen Build (kompilieren Sie nicht).

Wählen Sie nach der Installation eine Audio/Video-Eingangsquelle für FFmpeg. Sie können folgendermaßen nachschlagen, was verfügbar ist:

ffmpeg -list_devices true -f dshow -i dummy.

Weitere Informationen finden Sie hier. Je nachdem, was verfügbar ist und welche Aufnahmemethode angestrebt ist, sollten Sie in der Lage sein, das Video/Audio (eingebettet) direkt von Ihrem ausgewählten Gerät zu erfassen und die Signale mit FFmpeg zu codieren. Beispiel:

  • Webcam – So erfassen Sie die Ausgabe der Logitech C920-Webcam:

    ffmpeg -f dshow -video_size 1920x1080 -framerate 30 -i video="HD Pro Webcam C920":audio="Microphone (HD Pro Webcam C920)" -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -r 30 -s 1920x1080 -profile:v main -preset veryfast -g 120 -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/<IVS-stream-key>
  • Videodatei – FFmpeg arbeitet mit vielen Video-Dateiformaten und Capture-Karten. Hier finden Sie ein Beispiel für Stream basierend auf einem MP4-Eingang:

    ffmpeg -re -i input.mp4 -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -s 1920x1080 -profile:v main -preset veryfast -force_key_frames expr:gte(t,n_forced*2) -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/app/<IVS-stream-key>

Weitere Informationen über die Eingabe für <IVS-ingest-server> und <IVS-stream-key> finden Sie unter weitere Informationen über das Einrichten von Livestreaming-Software in Erste Schritte mit IVS-Streaming mit niedriger Latenz. Zum Beispiel:

  • Server aufnahmebereit: rtmps://jds34ksdg3las.global-contribute.live-video.net/app/

  • Stream-Schlüssel: sk_us-west-2_abcd1234efgh5678ijkl

Stream-Übernahme

Die Stream-Übernahme ermöglicht es einem Benutzer, einen laufenden Stream in einem Kanal, der ihm gehört, durch einen neuen Stream zu ersetzen. Während dieses Vorgangs wird die Verbindung zum vorherigen Stream nie unterbrochen, er wird einfach durch den neuen Stream ersetzt. Auf diese Weise können Benutzer nahtlos eine Verbindung mit einem neuen Stream herstellen, ohne warten zu müssen, bis die Verbindung zum laufenden Stream vollständig unterbrochen wird.

Der Prozess für die Stream-Übernahme verlängert eine laufende Stream-Sitzung, initiiert jedoch keine neue. Dadurch wird die Kontinuität des Streams aufrechterhalten, ohne dass Zuschauer den Player aktualisieren müssen, obwohl es zu einem kurzen Pufferzustand kommen kann. Es gibt keine Unterbrechungen bei Aufzeichnungen von Stream-Sitzungen, bei denen eine Stream-Übernahme stattfindet.

Um eine Stream-Übernahme zu initiieren, fügen Sie den URL-Parameter priority an den Stream-Schlüssel des Benutzers an. Der Stream-Schlüssel wird zu <IVS-stream-key>?priority=<priority>. Dabei ist <priority> eine positive Ganzzahl zwischen 1 und 2 147 483 647.

Die URI-Syntax für die Verwendung der Stream-Übernahme mit dem RTMPS-Protokoll lautet wie folgt:

rtmps://<uri>/<streamkey>?priority=N

Für die SRT-Erfassung lautet die URI-Syntax für die Stream-Übernahme wie folgt:

srt://<uri>?streamid=#!::u=<streamkey>,priority=N&passphrase=foobar

Eine Übernahme ist erfolgreich, wenn die für den neuen Stream angegebene Prioritätsganzzahl größer als die Prioritätsganzzahl für den laufenden Stream ist oder wenn keine vorherige Prioritätsganzzahl festgelegt wurde. Außerdem müssen der alte und der neue Stream dieselbe Auflösung, denselben Videocodec, denselben Audiocodec und dieselbe Anzahl von Spuren aufweisen.

Standardmäßig können bis zu 100 Übernahmen in einem einzigen Stream durchgeführt werden, sofern für jede nachfolgende Übernahme eine höhere Prioritätsganzzahl verwendet wird. Die maximale Anzahl von Stream-Übernahmen kann pro AWS-Konto festgelegt werden (siehe Service Quotas). Sobald der Stream beendet ist, behält der Kanal keine vorherigen Prioritätsganzzahlen bei oder speichert nicht, wie viele Übernahmen durchgeführt wurden, sodass jede Prioritätsganzzahl in künftigen Streams wiederverwendet werden kann. Wenn die Encoder-Einstellungen für die Stream-Übernahme geändert wurden, speichert die Stream-Sitzung außerdem keine früheren Encoder-Einstellungen, sondern zeigt nur die neuesten Einstellungen an.

Wenn das Feature zur automatischen Wiederverbindung aktiviert ist, verwenden die IVS-SDKs für mobile Übertragungen Stream-Übernahmen, um die Verbindung automatisch wiederherzustellen, wenn ein Broadcaster das Netzwerk wechselt (z. B. von WLAN auf Mobilfunk). So aktivieren Sie die automatische Wiederverbindung:

  • Legen Sie unter iOS config.autoReconnect.enabled = true für Ihr IVSBroadcastConfiguration-Objekt fest.

  • Legen Sie unter Android config.autoReconnect.setEnabled(true) für Ihr BroadcastConfiguration-Objekt fest.

Überlegungen zur gemeinsamen Verwendung von automatischer Wiederverbindung und Stream-Übernahme

Wenn Kunden mit dem SDK für mobile Übertragungen die automatische Wiederverbindung wie oben beschrieben aktivieren, versucht der laufende Streamer (Broadcaster A) nach einer Netzwerkunterbrechung bis zu fünf Mal, die Verbindung wiederherzustellen. Dabei beginnt er mit priority=1 und erhöht die Priorität bei jedem erneuten Verbindungsversuch. Durch diesen Vorgang kann die Übertragung in instabilen Netzwerken automatisch wiederhergestellt werden, indem die Priorität bei jeder erfolgreichen Wiederverbindung schrittweise erhöht wird.

Aufgrund des inkrementellen Charakters der automatischen Wiederverbindung wird es für einen anderen Broadcaster (Broadcaster B) jedoch schwierig, die Stream-Übernahme erfolgreich zu verwenden, wenn der ursprüngliche Broadcaster die automatische Wiederverbindung nutzt. Der Prioritätswert, der für eine erfolgreiche Übernahme erforderlich ist, ist nicht vorhersehbar, da bei Wiederverbindungsversuchen von Broadcaster A der Prioritätswert bei jedem erneuten Versuch während der Stream-Dauer erhöht wird.

Hinweis: Es wird nicht empfohlen, die Stream-Übernahme zu verwenden, um einen Stream aus dem SDK für mobile Übertragungen zu überschreiben, wenn die automatische Wiederverbindung aktiviert ist, da Sie die für die Übernahme erforderliche Priorität verwalten oder aufzeichnen müssen. Das Festlegen eines hohen Prioritätswerts mag anfangs zwar funktionieren, kann aber zu Problemen führen, wenn später eine weitere Übernahme erforderlich ist. Als spezielle Anwendungsfälle empfehlen wir die Beibehaltung der automatischen Wiederverbindung für Broadcaster A bei Netzwerkinstabilität und die Stream-Übernahme durch Broadcaster B.

Streamen mit dem Amazon IVS Broadcast SDK

Das Amazon IVS Broadcast SDK ist für Entwickler gedacht, die Android-, iOS- oder Web-Anwendungen mit Amazon IVS erstellen. Sehen Sie Broadcast-SDK-Dokumentation im Benutzerhandbuch für Amazon IVS, beginnend hier. Es gibt Unterseiten mit Anleitungen für Android, iOS und Webstreaming. Mit den Broadcast-SDKs können Sie die Bitrate, die Framerate und die Auflösung anpassen.

Testen des Streams

Überprüfen Sie immer, ob Ihr Stream funktioniert.

Navigieren Sie zum Video-Stream in der Amazon IVS-Konsole, um zu sehen, was gestreamt wird, und um den Livestream zu verwalten.