Einschränkungen bei Publisher-Videos – Web
Sobald Sie einen Publisher initialisiert, können Sie die gewünschte Auflösung und Bildrate der ausgehenden Videospur festlegen. Auf diese Weise können Sie die Bandbreite und die CPU-Auslastung für verschiedene UI-Größen (Miniaturansichten, Kacheln, Vollbild) und die Geräte der Abonnenten optimieren.
Dieses Thema umfasst die folgenden Abschnitte:
- Die Einschränkungen bei Publisher-Videos verstehen
- Festlegen der bevorzugten Auflösung
- Festlegen der bevorzugten Bildrate
- Wie sich Einschränkungen auf die Lieferung auswirken
- Bewährte Praktiken
- Beispiele
- Fehlersuche
- Weitere Ressourcen
Die Einschränkungen bei Publisher-Videos verstehen
Der Verlag kann für ein bevorzugt Auflösung und Bildrate für die Videospur: Das SDK legt Beschränkungen für das Aufnahmegerät und die ausgehende Spur fest. Abonnenten profitieren von geringeren Anforderungen an Bandbreite und CPU-Leistung, wenn der Herausgeber für kleine UI-Ziele kleinere Größen oder niedrigere Bildraten festlegt. Beachten Sie, dass die übertragene Qualität je nach Gerätefunktionen und Netzwerkbedingungen weiter angepasst werden kann.
Festlegen der bevorzugten Auflösung
Rufen Sie an. publisher.setPreferredResolution(preferredResolution) So legen Sie die gewünschten Pixelabmessungen fest:
await publisher.setPreferredResolution({ width: 640, height: 360 });
preferredResolutionist ein Objekt:{ width: number, height: number }.- Die bevorzugte Auflösung darf die ursprüngliche Veröffentlichungsauflösung nicht überschreiten.
- Gilt nur, wenn der Publisher Video aufzeichnet (
publishVideo: true).
Löst einen Fehler aus, wenn:
- Der Publisher ist ein reiner Audio-Dienst.
widthoderheightist keine positive ganze Zahl.- Die angeforderte Auflösung übersteigt die ursprüngliche Veröffentlichungsauflösung.
try {
// If the initial publish was 640x480, this will throw:
await publisher.setPreferredResolution({ width: 1920, height: 1080 });
} catch (error) {
console.error('Failed to set preferred resolution:', error.message);
}
Festlegen der bevorzugten Bildrate
Rufen Sie an. publisher.setPreferredFrameRate(frameRate) So legen Sie einen bevorzugten Wert für die Bildrate fest:
await publisher.setPreferredFrameRate(15);
frameRatemuss eine positive ganze Zahl (≥ 1) sein.- Erfordert eine aktive Videospur.
Löst einen Fehler aus, wenn:
- Der Publisher ist ein reiner Audio-Dienst.
frameRateist keine gültige ganze Zahl ≥ 1.
Wie sich Einschränkungen auf die Lieferung auswirken
Bevorzugte Einschränkungen wirken sich auf die ausgehende Videospur für alle Abonnenten in den Stream. Die endgültige Auflösung und Bildrate der übertragenen Daten können jedoch aus folgenden Gründen geringer ausfallen:
- Einschränkungen des Aufnahmegeräts
- Einschränkungen des Browsers oder des Betriebssystems
- Netzwerkbedingungen und adaptive Medienentscheidungen
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 überresolutionundframeRate). Für Abonnenten können Sie diese Einstellungen weglassen oderpreferredResolution: 'auto'beim Aufruf vonSession.subscribe(). - Verwenden Sie die Abonnenten-APIs (
subscriber.setPreferredResolution()/subscriber.setPreferredFrameRate()), um die Funktionsweise eines Einzelabonnent empfängt/decodiert/stellt einen Stream dar. Dies betrifft nur diesen Abonnenten und hat keinen Einfluss darauf, was der Publisher sendet oder was andere Abonnenten empfangen. - Verwenden Sie die Publisher-APIs (
publisher.setPreferredResolution()/publisher.setPreferredFrameRate()), um zu ändern, was die Herausgeber sendet. Dies betrifft alle Abonnenten dieses Streams, die die aktualisierten Einstellungen automatisch erhalten. In einigen Fällen kann es sinnvoll sein, die Auflösung des Publishers mithilfe der Methode „preferredResolution“ zu verringern, beispielsweise:- 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.
- Verwenden Sie geeignete Bildraten:
- 5 fps – statische Dashboards, Folien, bandbreitenabhängige Benutzeroberflächen
- 15 fps – Inhalte mit wenig Bewegung
- 30 fps – Vollbild-/hochwertiges Video
- 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).
- Diese APIs werden derzeit unterstützt nur im JavaScript-SDK.
Beispiele
// Lower quality for mobile users
if (isMobileUser) {
publisher.setPreferredResolution({ width: 320, height: 180 });
publisher.setPreferredFrameRate(15);
}
// Higher quality for desktop
if (isDesktopUser) {
publisher.setPreferredResolution({ width: 1280, height: 720 });
publisher.setPreferredFrameRate(30);
}
// Error when using resolution above initial publish
try {
await publisher.setPreferredResolution({ width: 1920, height: 1080 }); // If initial was 640x480, throws error
} catch (error) {
console.error(error.message);
}
// Debugging: Current track settings
const videoTrack = publisher.getVideoSource().track;
const { width, height, frameRate } = videoTrack.getSettings();
console.log('Current resolution:', width, 'x', height);
console.log('Current frame rate:', frameRate);
Fehlersuche
Umgang mit Fehlern
Aufrufe in try/catch und benutzerfreundliche Meldungen anzeigen, wenn Einschränkungen ungültig sind oder die Umgebung diese nicht erfüllen kann.
async function setPublisherQuality(publisher, preferredResolution, preferredFrameRate) {
try {
await publisher.setPreferredResolution(preferredResolution);
await publisher.setPreferredFrameRate(preferredFrameRate);
} catch (err) {
showMessage('Unable to apply video constraints. Check your device and network.');
console.error(err);
}
}
Überlegungen zum Netzwerk
Bei eingeschränkter Netzwerkkapazität kann die Medien-Pipeline die ausgegebene Auflösung oder Bildrate unabhängig von den bevorzugten Einstellungen verringern. Erwägen Sie die Implementierung von UI-Anzeigen für Modi mit reduzierter Qualität.