Video-Einschränkungen: Einstellung der bevorzugten Auflösung und Bildrate

Mit der Vonage Video API können Publisher Videostreams optimieren, indem sie bevorzugte Einschränkungen für die Videoauflösung und die Bildrate festlegen. Diese Einschränkungen helfen dabei, die Bandbreitennutzung zu verwalten, die Gerätefähigkeiten zu berücksichtigen und den Abonnenten ein maßgeschneidertes Benutzererlebnis zu bieten.

Dieser Leitfaden beschreibt die Verwendung der preferredResolution und preferredFrameRate APIs für Verlage.

Anmerkung: Diese APIs sind derzeit nur im JavaScript-SDK verfügbar. Es gibt keinen angekündigten Zeitplan für die Unterstützung in anderen SDKs.

Übersicht

Wenn Sie einen Videostream veröffentlichen, möchten Sie vielleicht die Videoqualität aus verschiedenen Gründen dynamisch anpassen: Einsparung von Bandbreite, Anpassung an die Anforderungen der Benutzeroberfläche oder Einschränkung des Ressourcenverbrauchs für bestimmte Teilnehmerrollen (z. B. Miniaturansichten oder Bildschirme mit geringer Bewegung). Die Publisher-API von Vonage stellt Methoden bereit, mit denen Sie die bevorzugte Auflösung und Bildrate für Ihre Videospuren anpassen können. Diese Einschränkungen werden auf dem Videoeingabegerät mithilfe von Standard-WebRTC-APIs durchgesetzt, um optimale Ergebnisse zu erzielen.

Steuerung von Videoauflösung und Bildrate

Der Verleger kann angeben:

  • Bevorzugte Auflösung: Die gewünschte Breite und Höhe (in Pixel) für den Videostream.
  • Bevorzugte Bildrate: Die gewünschte Anzahl von Bildern pro Sekunde (fps) für den Video-Stream.

Sie können diese mit den folgenden Methoden dynamisch steuern nach wird der Verlag initialisiert:

// Set preferred resolution (width x height)
await publisher.setPreferredResolution({ width: 640, height: 360 });

// Set preferred frame rate
await publisher.setPreferredFrameRate(15);

Diese Einstellungen steuern direkt die vom Herausgeber ausgehende Videospur, was sich wiederum auf die Qualität für alle Abonnenten auswirkt. Die tatsächlichen Netzwerkbedingungen und Gerätefunktionen können diese Werte jedoch einschränken oder außer Kraft setzen.

Einstellung der bevorzugten Auflösung

Methode: publisher.setPreferredResolution(preferredResolution)

  • preferredResolution ist ein Objekt mit width und height Eigenschaften (beide positive Ganzzahlen, in Pixel).
  • Die Auflösung kann nicht größer sein als die ursprüngliche Veröffentlichungsauflösung. Wenn Sie z. B. mit 640×480 veröffentlicht haben, können Sie keine höhere Auflösung als diese einstellen.

Typische Verwendung:

publisher.setPreferredResolution({ width: 320, height: 240 });

Validierungen:

  • Muss bei einem Publisher aufgerufen werden, der ein Video aufnimmt (publishVideo: true).
  • Beide width und height müssen positive ganze Zahlen sein.
  • Die Auflösung kann nicht größer sein als die ursprüngliche Veröffentlichungsauflösung.

Fehler-Fälle:

  • Schlägt fehl, wenn er bei einem reinen Audioverlag aufgerufen wird oder wenn die Eingabewerte ungültig sind.

Einstellung der bevorzugten Bildrate

Methode: publisher.setPreferredFrameRate(frameRate)

  • frameRate muss eine ganze Zahl größer oder gleich 1 sein.

Typische Verwendung:

publisher.setPreferredFrameRate(15);

Validierungen:

  • Muss bei einem Verlag mit einer aktiven Videospur aufgerufen werden.
  • Die Bildrate muss eine gültige ganze Zahl ≥ 1 sein.

Fehler-Fälle:

  • Wird ausgelöst, wenn er bei einem reinen Audioverlag aufgerufen wird oder wenn frameRate ungültig ist.

Bewährte Praktiken

  • Wenn Sie die ideale Auflösung und Bildrate im Voraus kennen, können Sie diese beim Erstellen des Publishers mit OT.initPublisher() (zum Beispiel über resolution und frameRate). Für Abonnenten können Sie diese Einstellungen weglassen oder preferredResolution: 'auto' beim Aufruf von Session.subscribe().
  • Verwenden Sie die Abonnenten-APIs (subscriber.setPreferredResolution() / subscriber.setPreferredFrameRate()), um zu ändern, wie ein einzelner Abonnent einen Stream empfängt/dekodiert/rendert. Dies betrifft nur diesen Abonnenten und ändert nicht, was der Herausgeber sendet oder was andere Abonnenten empfangen.
  • Verwenden Sie die Publisher-APIs (publisher.setPreferredResolution() / publisher.setPreferredFrameRate()), um zu ändern, was der Publisher sendet. Dies wirkt sich auf alle Abonnenten dieses Streams aus, die automatisch die aktualisierten Einstellungen erhalten. Möglicherweise möchten Sie die Auflösung des Publishers mit der Option preferredResolution Methode in mehreren Fällen, wie zum Beispiel:
    • Wenn Sie bemerken, dass das Publisher-Gerät Probleme hat, sei es aufgrund von CPU-Beschränkungen oder Netzwerkproblemen, und Sie die Belastung schneller lindern möchten, als es der WebRTC-Stack normalerweise tun würde.
    • Wenn der Akku des Geräts fast leer ist und Sie den Stromverbrauch minimieren möchten, um die Gesprächsdauer zu verlängern.
    • Wenn Sie eine Bildschirmfreigabe initiieren oder weitere Publisher vom selben Gerät aus starten und Rechenressourcen für diese Aktivitäten freigeben müssen.
  • Die bevorzugte Auflösung/Bildrate des Publishers kann niemals die bei der Initialisierung des Publishers angegebenen Werte überschreiten. Initialisieren Sie den Publisher mit der maximalen Auflösung und Bildrate, die Sie benötigen, und reduzieren oder erhöhen Sie dann dynamisch innerhalb dieser Grenzen, je nach Anwendungsfall.
  • Wählen Sie z. B. eine für den Inhalt geeignete Bildrate:
    • 5 fps für statische Folien, Dashboards, Bildschirme mit sehr wenig Bewegung oder minimaler Bandbreitennutzung.
    • 15 fps für bewegungsarme Bildschirme oder bandbreitenabhängige Szenarien
    • 30 fps für Full-Motion-Video oder hochwertige Anforderungen
  • Netzwerkbedingungen können das SDK daran hindern, die von Ihnen bevorzugte Auflösung und Bildrate beizubehalten. Behandeln Sie die bevorzugten Werte als Zielwerte: Wenn die Bandbreite oder die CPU eingeschränkt wird, kann das SDK die veröffentlichte/abonnierte Videoqualität automatisch reduzieren (z. B. kann eine 1080p-Einstellung bei schlechten Netzwerkbedingungen vorübergehend auf eine niedrigere Auflösung fallen).
  • Die bevorzugte Auflösung und Bildrate sind derzeit nur im JavaScript-SDK verfügbar. Es gibt keinen Zeitplan für das Hinzufügen dieser Funktion zu anderen SDKs.

Zusätzliche Hinweise

  • Die von Ihnen festgelegten Beschränkungen beeinflussen alle Abonnenten auf Ihren Stream, nicht nur auf die lokale Benutzeroberfläche.
  • Das Netzwerk und das Backend bestimmen letztendlich die tatsächliche Videoqualität, die auf der Grundlage der aktuellen Verbindungsqualität und der verfügbaren Bandbreite geliefert wird.
  • Diese APIs sind nur mit dem JavaScript-SDK verfügbar; andere SDKs unterstützen derzeit keine dynamischen Änderungen der Videoeinschränkungen.

Zusätzliche Ressourcen