Tobias Scheible Cyber Security & IT-Forensik Dozent
Skyline

Geschwindigkeitsoptimierung von Jitsi Meet

Jitsi Meet kann sehr einfach auf einem Server installiert werden. Sollte es Probleme mit der Performance geben, kann die Geschwindigkeit von Jitsi Meet mit ein paar Einstellungen optimiert werden.

Sonntag, 08. November 2020
0 Kommentare

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.

Netzwerk

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.

Rechenleistung

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 des Servers

Auflösung

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,
Videoqualität

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
Full HD

Wer hingegen Jitsi Meet in Full HD nutzen möchten, kann die Werte auf 1080 Pixel erhöhen.

Anzahl an Videos

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,
Arbeitsspeicher

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

Audiofilter

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
automatische Lautstärke

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


Jitsi Meet Artikel für Administratoren

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.

Kommentare

Es wurde noch kein Kommentar abgegeben.

Schreibe einen Kommentar!

Hilfe zum Kommentieren

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen oder eine Gefährdung anderer Besucher darstellen, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und sie haben die Möglichkeit, ein Avatar-Bild zu verwenden. Dazu müssen Sie mit Ihrer E-Mail Adresse bei Gravatar angemeldet sein. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.