06.01.2021 Update: Abschnitt Bitrate neu hinzugefügt.
Ist bei Jitsi Meet die Webcam aktiviert oder der Bildschirm freigegeben, wird der Videostream an den Server weitergeleitet. Auf dem Jitsi Meet Server ist dann die Komponente Videobridge2 für die weitere Verarbeitung zuständig. Hier werden die Videos jedoch weder bearbeitet noch umgewandelt, sondern nur weitergeleitet. Daher können sehr viele Streams gleichzeitig verarbeitet werden, wie auch der Benchmark der Jitsi Meet Macher zeigt.
Daher müssen die Clients in der Lage sein, die ggf. große Anzahl an Videostreams zu verarbeiten. Zudem muss der Server die Daten schnell verarbeiten können und entsprechende Kapazitäten bei der Netzwerkverbindung haben.
Grundsätzlich gilt: Wenn nur der (aktuelle) Sprecher die Webcam aktiviert hat, können sich sehr viele Teilnehmer gleichzeitig am Meeting beteiligen.
Empfehlungen für den Client
Der Client hat bei Jitsi Meet die Aufgabe, den eignen Videostream der Webcam zu codieren, die Oberfläche im Webbrowser darzustellen und die eingehenden Videostreams zu empfangen, zu decodieren und darzustellen. Wichtig ist eine ausreichend schnelle Internet- und Netzwerkverbindung und genügend Rechenleistung.
Für jeden Videostream, der empfangen wird, kann ungefähr mit einer Bandbreite von 2,5 Mbit/s gerechnet werden (siehe VP8 Benchmark(https://testrtc.com/vp9/)). Bei 20 Teilnehmer wird damit eine Bandbreite von ca. 50 Mbit/s erreicht. Daher muss der Internetanschluss mindestens diese Bandbreite aufweisen. Gerade bei WLAN-Verbindungen im 2,4 GHz Segment mit vielen anderen Netzwerken auf dieser Frequenz ist die Verbindungsqualität zum Teil jedoch zu stark beeinträchtigt. Eine schlechte Internet- und Netzwerkverbindung ist eine häufige Fehlerquelle bei einzelnen Teilnehmern. Diese Problematik kann zum Beispiel mit einem Speedtest analysiert werden.
Die Codierung der Videos wird auf dem Prozessor (CPU) oder der Grafikkarte (GPU) durchgeführt. Umso größer die Anzahl der Videostreams, umso mehr Rechenleistung wird benötigt. Moderne CPUs unterstützen die Codierung mit speziellen Hardware-Funktionen, die deutlich effizienter sind als bei älteren Modellen. Bei Prozessoren von Intel, wird diese Technik als Intel Quick Sync Video bezeichnet. Jitsi Meet verwendet als Codec VP8 oder H.264. Diese werden, seit der sechsten Generation der Intel-Core-Familie (Skylake) voll unterstützt. Bei AMD bieten alle Ryzen CPUs den vollen Support. Gerade günstige oder kleinere Notebooks mit älteren Atom- oder Celeron-CPUs bieten jedoch keine Hardwareunterstützung und haben somit häufig Probleme. Dies zeigt sich zum Beispiel darin, dass der Webbrowser nicht mehr reagiert. Daher sollte der Client umso leistungsfähiger sein, umso mehr Videostreams angezeigt werden sollen.
Optimierung von Jitsi Meet
Für die Geschwindigkeitsoptimierung von Jitsi Meet stehen drei Bereiche zur Verfügung: Videoübertragung, Audioübertragung und die Darstellung des Interface.
Videoübertragung
Die Videoqualität von Jitsi Meet, also die Auflösung der Videos, ist standardmäßig auf eine Höhe von 720 Pixel (HD-Qualität) festgelegt. Die Breite des Bildes ergibt sich aus der verwendeten Webcam, typischerweise entweder 16:9 oder 4:3. Als Erstes kann die Qualität der eigenen Webcam reduziert werden. Dazu muss in der Datei /etc/jitsi/meet/scheible.it-config.js (der Dateinamen wird in Abhängigkeit der verwendeten Domain generiert) der Wert resolution in Zeile 109 einkommentiert und geändert werden. Da das eigene Bild nicht so wichtig ist, habe ich hier den Wert auf 240 Pixel gesetzt:
// /etc/jitsi/meet/meet.scheible.it-config.js 109: resolution: 240,
Zusätzlich kann die zu übertragende Videoqualität in Jitsi Meet eingestellt werden. Dies erfolgt in derselben Datei. Dazu müssen die Kommentarzeichen „//“ der Zeilen 116 bis 125 entfernt werden. Danach müssen die folgenden Einträge angepasst werden, um eine niedrigere Qualität zu verwenden.
// /etc/jitsi/meet/meet.scheible.it-config.js 120: ideal: 360, 121: max: 360, 122: min: 180
Wer hingegen Jitsi Meet in Full HD nutzen möchten, kann die Werte auf 1080 Pixel erhöhen.
Im August 2020 wurde die neue Option videoQuality für die Optimierung der Videoqualität auf dem Client hinzugefügt. Mit der Einstellung maxBitratesVideo kann die maximale Bitrate, also die Anzahl der Bits pro Sekunde, festgelegt werden. Da die Bitrate variabel ist, ein weißer Hintergrund ohne eine Person benötigt weniger Daten, wird nur das Maximum festgelegt. Um die zu übertragende Datenmenge zu reduzieren, können die Werte halbiert werden (dadurch verschlechtert sich die Videoqualität):
videoQuality:{ maxBitratesVideo: { low: 100000, standard: 250000, high: 750000 } },
Andere Dienste wie Microsoft Teams und Zoom verwenden eine andere Methode, um Bandbreite zu sparen. Hier wird immer nur das Video des aktuellen Sprechers eingeblendet. Damit wird die Anzahl an gleichzeitigen Videos effektiv auf einen Video-Stream reduziert. Diese Konfiguration kann auch bei Jitsi Mett vorgenommen werden. Dazu muss ebenfalls in der Datei /etc/jitsi/meet/meet.scheible.it-config.js in der Zeile 215 der Eintrag channelLastN auf 1 gesetzt werden.
// /etc/jitsi/meet/meet.scheible.it-config.js 215: channelLastN: 1,
In diesem Zusammenhang sollte auch die Option enableLayerSuspension aktiviert werden. Damit werden nur Videos übertragen, die auch bei einem anderen Nutzer dargestellt werden.
// /etc/jitsi/meet/meet.scheible.it-config.js 129: enableLayerSuspension: true,
Wird ein Jitsi Meet Server intensiv genutzt, ist zu beobachten, dass die CPU stark ausgelastet wird, aber nur ein kleiner Teil des Arbeitsspeichers genutzt wird. Im Jitsi Forum wird dies ebenfalls diskutiert und hier wurde festgestellt, dass die Komponenten Videobridge und Jicofo einen festeingestellten Wert an Arbeitsspeicher für den Hauptprozess verwenden. Je nach verfügbaren Ressourcen können diese Werte angepasst werden. Mit den nachfolgenden Eingaben wird dieser Wert von jeweils 3 GB auf 8 GB erhöht. Danach sollte das System auf Stabilität getestet werden.
# sed -i 's/# VIDEOBRIDGE_MAX_MEMORY=3072m;/VIDEOBRIDGE_MAX_MEMORY=8192m;/g' /usr/share/jitsi-videobridge/lib/videobridge.rc # sed -i 's/3072m/8192m/g' /usr/share/jicofo/jicofo.sh
Audioübertragung
Zum Teil kommt es vor, dass die Clients bei einer Jitsi Meet Onlinekonferenz sehr ausgelastet sind. Zum Beispiel kann der Prozessor nahezu vollständig ausgelastet sein. Das liegt zum einen an der Darstellung der Videos, aber auch die Audioverarbeitung kann für eine hohe Last sorgen. Es sind einige Audiofilter aktiv, die versuchen, Hall- oder Echoeffekte zu unterdrücken und Störgeräusche herauszufiltern. Werden alle Audiofilter deaktiviert, sollten Headsets verwendet werden, da diese am wenigsten Störgeräusche verursachen. Die Optionen befinden sich ganz am Ende der Konfigurationsdatei im unkommentierten Bereich. In einem Thread im offiziellen Forum werden sie beschrieben.
// /etc/jitsi/meet/meet.scheible.it-config.js 513: disableAEC: true, // Disables Acoustic Echo Cancellation 514: disableAGC: true, // Disables Automatic Gain Control 516: disableHPF: true, // Disables Highpass Filter 517: disableNS: true, // Disables Noise Suppression
// /etc/jitsi/meet/meet.scheible.it-config.js 515: disableAP: true, // Disables all audio processing
Eine weitere Funktion ist die automatische Einstellung der Lautstärke. Diese Methode sorgt für eine angenehme Unterhaltung, da alle Teilnehmer gleich laut sind. Gleichzeitig benötigt die kontinuierliche Messung aber Ressourcen und kann mit dem folgenden Eintrag deaktiviert werden:
// /etc/jitsi/meet/meet.scheible.it-config.js 074: disableAudioLevels: true,
Darstellung des Interface
Eine weitere Stellschraube, um die Clients einer Jitsi Meet Webkonferenz zu entlasten, ist die Deaktivierung einiger Features des Interfaces. Dabei geht es um Funktionen für die Darstellung, die bei bestimmten Events ausgeführt werden. Dadurch werden die Clients entlastet, da die Änderungen der Oberfläche mit Videostreams viele Ressourcen benötigen.
Die Änderungen hierfür müssen in der interface_config.js vorgenommen werden. Die ersten beiden Optionen deaktivieren die Markierung bzw. Animation für den aktiven Sprecher.
// interface_config.js 85: DISABLE_FOCUS_INDICATOR: true, 86: DISABLE_DOMINANT_SPEAKER_INDICATOR: true,
Die Darstellung der anderen Gesprächsteilnehmer auf der rechten Seite wird als „Filmstrip“ bezeichnet. Er kann durch einen Klick auf das > Icon rechts unten ausgeblendet werden. Mit dem gleichen Button kann auch wieder die Einblendung erfolgen. Über die Konfiguration kann der Filmstrip beim Start gleich ausgeblendet sein. Die Option ist nicht vorhanden und muss extra hinzugefügt werden:
// interface_config.js SET_FILMSTRIP_ENABLED: false,
Eine weitere Einstellung ist die Deaktivierung der Benachrichtigungen, wenn eine Person den virtuellen Jitsi Meet Besprechungsraum betritt oder wieder verlässt. Für die Geschwindigkeit bringt es nicht so viel, aber gerade bei größeren Gruppen kann die Darstellung nerven:
// interface_config.js DISABLE_JOIN_LEAVE_NOTIFICATIONS: true,
Jitsi Meet Artikelserie
Dieser Blogbeitrag ist Teil der Artikelserie „Videokonferenzen mit Jitsi Meet“, die sich mit dem Open-Source-Webkonferenzsystem Jitsi für Video-, Web- und Telefonkonferenzen beschäftigt. Die Artikelserie zu Jitsi Meet umfasst die folgenden Themen:
Jitsi Meet Artikel für Anwender
- Liste mit öffentlichen Jitsi Meet Instanzen
- Anleitung für Jitsi Meet Videokonferenzen
- Jitsi Meet Anleitung für Moderatoren
- Jitsi Meet für Smartphones und Tablets
- Jitsti Meet Nutzung per Desktop App
- Tipps und Tricks mit Jitsi Meet
- Meine eigene Jitsi Meet Instanz
- Jitsi Meet Server mit ressourcensparender Konfiguration
- Neuer Jitsi Meet Testserver (Nightly Builds)
- Virtuelle Webcam in Jitsi Meet verwenden
- Virtuelle Desktops für die Freigabe nutzen
- Neues zu Jitsi Meet – Update und Server
- Breakout Rooms in Jitsi Meet
Jitsi Meet Artikel für Administratoren
- Installation eines eigenen Jitsi Meet Servers
- Jitsi Meet unter Ubuntu 20.04 installieren
- Mehrere Jitsi Meet Varianten per API
- Geschwindigkeitsoptimierung von Jitsi Meet
- Das Design von Jitsi Meet anpassen
- Datenschutzfreundliche Konfiguration von Jitsi Meet
- Jitsi Meet Update Script
- Jitsi Meet Server Auslastung
- Jitsi Meet Statistik als Grafana Dashboard
- Neues Jitsi Meet Feature: Lobby Wartebereich
- Jitsti Meet und die Log4Shell Sicherheitslücke
Changelog
06.01.2021Abschnitt Bitrate neu hinzugefügt.
Guten Tag,
Bitrate für Performance ganz wichtig und lässt sich scheinbar inzwischen einstellen.
Damals ging das nicht, vielleicht können Sie Ihren Artikel ergänzen?
https://community.jitsi.org/t/jitsi-automatically-reduces-video-quality/75533/
Bin mir noch nicht 100 sicher, wie ich das kofigurieren soll. Gibts noch nicht viele Infos zu.
Habe heute neu JITSI installiert und dann sind mir die Parameter aufgefallen in der /etc/jitsi/meet/meet.DOMAIN.de-config.js