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
9 Kommentare

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.

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

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.

Bitrate

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

Changelog

06.01.2021Abschnitt Bitrate neu hinzugefügt.

Ü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 und in meinem Fachbuch. 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

Lenu am 18. Dezember 2020 um 11:27 Uhr

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

Tobias am 20. Dezember 2020 um 11:46 Uhr

Dankeschön für den Hinweis. Damit habe ich mich in meinem neusten Artikel Jitsi Meet Server mit ressourcensparender Konfiguration beschäftigt. Werde ich aber auch noch hier mitaufnehmen.

Martin am 10. Februar 2021 um 00:52 Uhr

Hallo, bei mir wird das Bild nur in LD angezeigt obwohl ich diese konfig habe:

    constraints: {
         video: {
             height: {
                 ideal: 720,
                 max: 1080,
                 min: 240

Wenn ich mit dem gleichen Client iOS App auf den original jitsi Server gehe wird das Bild HD.
Was muss ich noch konfigurieren umd das mit meinem Server auch zu haben?
Danke!
Gruß Martin

Tobias am 11. Februar 2021 um 18:13 Uhr

Hallo Martin,
schau dir mal die Konfiguration von meet.jit.si an und vergleiche sie mit deinen Einstellungen. Dazu einfach den Quelltext auf der Startseite view-source:https://meet.jit.si/ aufrufen und nach constraints suchen.
Grüße Tobias

Martin am 11. Februar 2021 um 23:47 Uhr

Hallo Tobias,
vielen Dank. Ich hatte die Anpassung wie auf meet.jit.si mal durchgeführt leider ohne Erfolg. Jetzt macht er bei jit.si auch nur noch LD aber auf deinem Server macht er SD.
Vielleicht installieren ich am WE meinen Server mal komplett neu.
Eigentlich sollte doch mindestens SD möglich sein ohne eine Konfigurationsänderung oder?
Gruß
Martin

Klaus am 11. März 2021 um 15:16 Uhr

Moin,

ich habe die wirklich gute Anleitung genutzt und der Jitsi Server läuft jetzt wirklich gut. Allerdings habe ich auch versucht den Filmstrip standardmäßig auszublenden.

// interface_config.js
SET_FILMSTRIP_ENABLED: false,

Leider zeigte das nicht die gewünschte Auswirkung, der Filmstrip wurde nicht ausgeblendet und jetzt kann man den Filmstrip auch manuell mit dem Pfeil nicht mehr verbergen. Die Rücknahme der Konfiguration brachte da auch keinen Erfolg. Dieser Filmstrip ist nunmehr permanent sichtbar.

Woran könnte das liegen?

Gruß
Klaus

Bernd am 12. April 2021 um 21:33 Uhr

Vielen Dank für die Tipps!

Raimund am 16. Dezember 2021 um 11:34 Uhr

Hi,

bei einer Konferenz mit etwa 20 Teilnehmern erhalte ich häufig von einzelnen Teilnehmern kein Kamerabild. Es erscheint dann, dass Bild wäre deaktiviert, um Bandbreite zu sparen.
Das möchte ich jedoch gar nicht, da der Server hochperformant ist (AMD Milan 7003, 32 GB RAM, 8 reale Kerne, per Gigabit ans Internet angebunden). Die Auslastung liegt bei etwa 1 bis 5 Prozent.
Trotzdem wird manchmal nur ein kleiner Teil der anwesenden Kamerabilder angezeigt.
Wo kann ich diesbezüglich dran drehen? Ich möchte hier keinerlei Beschränkungen, weil die Hardware und die Bandbreite es hergibt. Danke.

Tobias am 21. Dezember 2021 um 09:59 Uhr

Hallo Raimund,
das ist von mehreren Faktoren abhängig. In meinem Artikel Neuer Jitsti Meet Server habe ich das Thema näher beschrieben.
Grüße Tobias

Schreibe einen Kommentar!

Hilfe zum Kommentieren und Hiweise

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, eine Gefährdung anderer Besucher darstellen oder keinen sinvollen Inhalt beinhalten, 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 damit ich direkt Kontakt aufnehmen kann. 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.