Streaming-Optimierungen in Echtzeit - 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.

Streaming-Optimierungen in Echtzeit

Um sicherzustellen, dass Ihre Benutzer das beste Erlebnis beim Streamen und Ansehen von Videos mithilfe von IVS Echtzeit-Streaming haben, gibt es verschiedene Möglichkeiten, das Erlebnis zu verbessern oder Teile des Erlebnisses zu optimieren, indem Sie die Features verwenden, die wir heute anbieten.

Einführung

Bei der Optimierung der Benutzererlebnisqualität ist es wichtig, die gewünschte Benutzererfahrung zu berücksichtigen. Diese kann sich je nach den Inhalten, die sie sich ansehen, und den Netzwerkbedingungen ändern.

In diesem Leitfaden konzentrieren wir uns auf Benutzer, die entweder Publisher von Streams oder Subscriber von Streams sind und wir berücksichtigen die gewünschten Aktionen und Erfahrungen dieser Nutzer.

Adaptives Streaming: Mehrschichtige Kodierung mit Simulcast

Dieses Feature wird nur von den folgenden Client-Versionen unterstützt:

Sie müssen eine E-Mail an amazon-ivs-simulcast@amazon.com senden, um sich für dieses Feature für Ihr Konto anzumelden. Die Aktivierung von Simulcast über die SDK-Konfiguration hat keine Auswirkungen, sofern Sie nicht angemeldet sind.

Sobald Sie sich für dieses Feature entschieden haben, codieren die Publisher bei Verwendung der IVS-SDKs für Echtzeitübertragungen mehrere Ebenen von Videos, und die Subscriber passen sich automatisch an die für ihr Netzwerk am besten geeignete Qualität an bzw. wechseln zu dieser. Wir nennen das mehrschichtige Kodierung mit Simulcast.

Die mehrschichtige Kodierung mit Simulcast wird auf Android und iOS sowie auf Chrome-Desktopbrowsern (für Windows und macOS) unterstützt. Wir unterstützen keine mehrschichtige Kodierung in anderen Browsern.

In der Abbildung unten sendet der Host drei Videoqualitäten (hoch, mittel und niedrig). IVS leitet auf der Grundlage der verfügbaren Bandbreite das Video von höchster Qualität an jeden Zuschauer weiter. Dies bietet jedem Zuschauer ein optimales Erlebnis. Wenn sich die Netzwerkverbindung von Zuschauer 1 von gut zu schlecht ändert, beginnt IVS automatisch damit, Zuschauer 1 Video mit geringerer Qualität zu senden, sodass Zuschauer 1 den Stream weiterhin ohne Unterbrechung ansehen kann (mit der bestmöglichen Qualität).

Verwenden Sie die mehrschichtige Kodierung mit Simulcast, um die Videoqualität an die Qualität der Netzwerkverbindung eines Zuschauers anzupassen.

Standardebenen, Qualitäten und Frameraten

Die Standardqualitäten und Ebenen, die für Mobil- und Webbenutzer bereitgestellt werden, lauten wie folgt:

Mobil (Android, iOS) Web (Chrome)

Hohe Schicht (oder benutzerdefiniert):

  • Maximale Bitrate: 900 000 bps

  • Bildrate: 15 fps

  • Auflösung: 360x640

Hohe Schicht (oder benutzerdefiniert):

  • Maximale Bitrate: 1 700 000 bps

  • Bildrate: 30 fps

  • Auflösung: 1280x720

Mittelschicht: keine (nicht erforderlich, da der Unterschied zwischen den Bitraten auf hoher und niedriger Ebene auf Mobilgeräten gering ist)

Mittelschicht:

  • Maximale Bitrate: 700 000 bps

  • Bildrate: 20 fps

  • Auflösung: 640x360

Niedrige Schicht:

  • Maximale Bitrate: 150 000 bps

  • Bildrate: 15 fps

  • Auflösung: 180x320

Niedrige Schicht:

  • Maximale Bitrate: 200 000 bps

  • Bildrate: 15 fps

  • Auflösung: 320x180

Konfiguration von mehrschichtiger Kodierung mit Simulcast

Um die mehrschichtige Kodierung mit Simulcast verwenden zu können, müssen Sie sich für das Feature entschieden und dies auf dem Client aktiviert haben. Wenn Sie es aktivieren, wird eine Erhöhung der Gesamtbitrate übertragen, mit dem Vorteil, dass weniger Videos eingefroren werden.

Android

// Opt-out of Simulcast StageVideoConfiguration config = new StageVideoConfiguration(); config.simulcast.setEnabled(true); ImageLocalStageStream cameraStream = new ImageLocalStageStream(frontCamera, config); // Other Stage implementation code

iOS

// Opt-out of Simulcast let config = IVSLocalStageStreamVideoConfiguration() config.simulcast.enabled = true let cameraStream = IVSLocalStageStream(device: camera, configuration: config) // Other Stage implementation code

Web

// Opt-out of Simulcast let cameraStream = new LocalStageStream(cameraDevice, { simulcast: { enabled: true } }) // Other Stage implementation code

Streamingkonfigurationen

In diesem Abschnitt werden andere Konfigurationen beschrieben, die Sie an Ihren Video- und Audiostreams vornehmen können.

Ändern der Bitrate des Video-Streams

Verwenden Sie die folgenden Konfigurationsbeispiele, um die Bitrate Ihres Video-Streams zu ändern.

Android

StageVideoConfiguration config = new StageVideoConfiguration(); // Update Max Bitrate to 1.5mbps config.setMaxBitrate(1500000); ImageLocalStageStream cameraStream = new ImageLocalStageStream(frontCamera, config); // Other Stage implementation code

iOS

let config = IVSLocalStageStreamVideoConfiguration(); // Update Max Bitrate to 1.5mbps try! config.setMaxBitrate(1500000); let cameraStream = IVSLocalStageStream(device: camera, configuration: config); // Other Stage implementation code

Web

// Note: On web it is also recommended to configure the framerate of your device from userMedia const camera = await navigator.mediaDevices.getUserMedia({ video: { bitrate: { ideal: 1500, max: 1500, }, }, }); let cameraStream = new LocalStageStream(camera.getVideoTracks()[0], { // Update Max Bitrate to 1.5mbps or 1500kbps maxBitrate: 1500 }) // Other Stage implementation code

Ändern der Framerate des Video-Streams

Verwenden Sie die folgenden Konfigurationsbeispiele, um die Framerate Ihres Video-Streams zu ändern.

Android

StageVideoConfiguration config = new StageVideoConfiguration(); // Update target framerate to 10fps config.targetFramerate(10); ImageLocalStageStream cameraStream = new ImageLocalStageStream(frontCamera, config); // Other Stage implementation code

iOS

let config = IVSLocalStageStreamVideoConfiguration(); // Update target framerate to 10fps try! config.targetFramerate(10); let cameraStream = IVSLocalStageStream(device: camera, configuration: config); // Other Stage implementation code

Web

// Note: On web it is also recommended to configure the framerate of your device from userMedia const camera = await navigator.mediaDevices.getUserMedia({ video: { frameRate: { ideal: 10, max: 10, }, }, }); let cameraStream = new LocalStageStream(camera.getVideoTracks()[0], { // Update Max Framerate to 10fps maxFramerate: 10 }) // Other Stage implementation code

Optimieren der Audio-Bitrate und Stereo-Unterstützung

Verwenden Sie die folgenden Konfigurationsbeispiele, um die Bitrate und Stereoeinstellungen Ihres Audio-Streams zu ändern.

Web

// Note: Disable autoGainControl, echoCancellation, and noiseSuppression when enabling stereo. const camera = await navigator.mediaDevices.getUserMedia({ audio: { autoGainControl: false, echoCancellation: false, noiseSuppression: false }, }); let audioStream = new LocalStageStream(camera.getAudioTracks()[0], { // Optional: Update Max Audio Bitrate to 96Kbps. Default is 64Kbps maxAudioBitrateKbps: 96, // Signal stereo support. Note requires dual channel input source. stereo: true }) // Other Stage implementation code

Android

StageAudioConfiguration config = new StageAudioConfiguration(); // Update Max Bitrate to 96Kbps. Default is 64Kbps. config.setMaxBitrate(96000); AudioLocalStageStream microphoneStream = new AudioLocalStageStream(microphone, config); // Other Stage implementation code

iOS

let config = IVSLocalStageStreamConfiguration(); // Update Max Bitrate to 96Kbps. Default is 64Kbps. try! config.audio.setMaxBitrate(96000); let microphoneStream = IVSLocalStageStream(device: microphone, config: config); // Other Stage implementation code

Empfohlene Optimierungen

Szenario Empfehlungen
Streams mit Text oder sich langsam bewegenden Inhalten wie Präsentationen oder Folien Verwenden Sie für Simulcast die Codierung auf mehreren Ebenen oder konfigurieren Sie Streams mit einer niedrigeren Framerate.
Streams mit Action oder viel Bewegung Verwenden Sie für Simulcast die Codierung auf mehreren Ebenen.
Ströme mit Konversation oder wenig Bewegung Verwenden Sie für Simulcast die Codierung auf mehreren Ebenen oder wählen Sie „Nur Audio“ (siehe „Teilnehmer abonnieren“ in den SDK-Leitfäden für Echtzeit-Streaming-Broadcasts: Web, Android und iOS.)
Nutzer streamen mit begrenztem Datenvolumen Verwenden Sie für Simulcast die Codierung auf mehreren Ebenen oder, wenn Sie eine geringere Datennutzung für alle wünschen, konfigurieren Sie eine niedrigere Framerate und senken Sie die Bitrate manuell.