Tobias Scheible Cyber Security & IT-Forensik Dozent
Skyline Tokio

Jitsi Meet Server mit ressourcensparender Konfiguration

Jitsi Meet läuft in mehreren Webbrowsern und somit auf vielen Rechnern ohne Probleme. Allerdings gibt es einige Funktionen, die auf dem Client eine gewisse Rechenleistung benötigen, was gerade ältere Rechner zu schaffen macht. Daher habe ich einen ressourcensparenden Jitsi Meet Server speziell für leistungsschwächere Rechner oder ältere Clients eingerichtet.

Sonntag, 20. Dezember 2020
2 Kommentare

Um in der derzeitigen Corona-Lage und in der Weihnachtszeit eine weitere Unterstützung zu liefern, habe ich mich entschieden, einen zusätzlichen Jitsi Meet Server einzurichten, der auch mit leistungsschwächeren Clients genutzt werden kann.

  • Alternativer Server für leistungsschwächere Clients
  • Kostenlose Nutzung des Jitsi Meet Servers in beliebiger Gruppengröße
  • Datenschutzfreundliche Konfiguration und deutscher Serverstandort
  • Reduzierte Videoauflösung und Deaktivierung einiger Funktionen

Ressourcensparender Jitsi Meet Server (meet2.scheible.it):

Das Ziel dieser Konfiguration ist die Nutzung von Jitsi Meet mit niedrigerer Bandbreite und mit älteren Rechnern, die weniger CPU-Power zur Verfügung haben. Dazu habe ich die maximale Video-Auflösung reduziert und Funktionen zur Audioaufbereitung und Effekte des Interface deaktiviert. Die grundsätzliche Funktion bleibt jedoch gleich und allgemein sind nur wenige Unterschiede erkennbar.

Benchmark

In Tests mit meinem Notebook hat sich gezeigt, dass die CPU-Last des Webbrowsers 50 % bis 66,7 % reduziert werden konnte. Getestet wurde es in einem Meeting mit drei Teilnehmern und einer aktivierten Webcam.

Konfiguration des Servers

Der neue Server hat die gleiche Grundkonfiguration wie meine Hauptinstanz, diese habe ich im Artikel „Meine eigene Jitsi Meet Instanz“ beschrieben. Er verwendet dieselben Einstellungen, um den Datenschutz zu verbessern und die Sicherheit zu erhöhen. Zusätzlich wurde dieser Server so konfiguriert, dass möglichst wenig Bandbreite und Last auf den Clients anfällt. Dazu habe ich mich an meinem Artikel „Geschwindigkeitsoptimierung von Jitsi Meet“ orientiert. Es wird ein Root-Server des Anbieters Netcup eingesetzt, der in einem Rechenzentrum in Nürnberg betrieben wird.

Der Webclient hat bei Jitsi Meet die Aufgabe, den eigenen Videostream der Webcam zu codieren, diesen Stream zu senden, die Oberfläche im Webbrowser zu rendern und die eingehenden Videostreams zu empfangen, zu decodieren und darzustellen.

Video-Auflösung und -Codierung

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. Das sorgt für weniger CPU-Last, was wiederum der Akkulaufzeit zugutekommt. Jitsi Meet verwendet als Codec VP8 oder H.264. Die Unterstützung für VP9 befindet sich momentan noch in der Entwicklung und wird in Zukunft zur Verfügung stehen. Beide Codecs werden seit der sechsten Generation der Intel-Core-Familie (Skylake) voll unterstützt. Diese Technik wird hier als Intel Quick Sync Video bezeichnet. 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.

Ich habe mich entschieden, den Codec H.264 bei diesem Server als Standard zu aktivieren, da er etwas älter ist und zumindest in der Theorie eine bessere Hardware-Unterstützung bietet. In Benchmarks ist der VP8 zum Teil besser, was die benötigte Bandbreite angeht. Da ich aber die Auflösung reduziert habe, ist dieser Punkt nicht so relevant. In der Konfiguration von Jitsi Meet kann der Codec H.264 zweimal definiert werden. Die Einstellung für die P2P-Verbindung habe ich nicht geändert, da ich P2P deaktiviert habe.

// /etc/jitsi/meet/meet2.scheible.it-config.js  
170: preferH264: true
254: preferredCodec: 'H264',

Als Nächstes habe ich die typische Auflösung auf 240 Pixel und die höchste Auflösung auf 360 Pixel festgelegt. Die Anzahl der Pixel beschreibt dabei die Höhe des Webcam-Bildes. Eine Webcam mit einem 16:9 Seitenverhältnis überträgt somit eine maximale Auflösung von 640 × 360 Pixel.

// /etc/jitsi/meet/meet2.scheible.it-config.js  
129: resolution: 240,
140: constraints: {
141:     video: {
142:         height: {
143:             ideal: 240,
144:             max: 360,
145:             min: 180
146:         }
147:     }
148: },

Die obigen Einstellungen beziehen sich auf den Server. Weiter unten können weitere Einstellungen für den Client festgelegt werden. Hier kann auch die maximale Bitrate definiert werden, wobei ich die Werte leicht reduziert habe. Diese Optionen wurden erst kürzlich mit einem neuen Update hinzugefügt.

// /etc/jitsi/meet/meet2.scheible.it-config.js  
242: videoQuality: {
261:     maxBitratesVideo: {
262:         low: 100000,
263:         standard: 400000,
264:         high: 1000000 
265:     },
277:     minHeightForQualityLvl: {
278:         240: 'standard',
279:         360: 'high'
280:     }
281: },

Zusätzlich habe ich die Anzahl der Frames beim Teilen des Desktops auf ein Minimum gesenkt:

// /etc/jitsi/meet/meet2.scheible.it-config.js  
179: desktopSharingFrameRate: {
180:     min: 1,
181:     max: 2
182: },

Audio-Funktionen

Jitsi Meet besitzt verschiedene Methoden, die die Audioqualität einer Konferenz verbessern. Diese Funktionen analysieren kontinuierlich das Audiosignal, wodurch CPU-Leistung benötigt wird. Gerade wenn Headsets verwendet werden, können diese Funktionen deaktiviert werden.

Die ersten Funktionen beziehen sich auf die automatische Anpassung der Lautstärke und die Erkennung eines lauten Mikrofons.

// /etc/jitsi/meet/meet2.scheible.it-config.js  
89: disableAudioLevels: true,
101: enableNoisyMicDetection: false,

Alle weiteren Audio-Funktionen können mit dem Eintrag disableAP deaktiviert werden – AP steht für Audio Processing. Es ist nicht vorhanden und muss daher selbst hinzugefügt werden. Ich habe ihn ganz am Ende vor dem letzten Eintrag hinzugefügt.

// /etc/jitsi/meet/meet2.scheible.it-config.js  
678: disableAP: true,
679: makeJsonParserHappy: 'even if last key had a trailing comma'

Interface Darstellung

Auf der Weboberfläche von Jitsi Meet können einige Funktionen deaktiviert werden, die viel Rechenleitung benötigen. Dazu gehört die Markierung des aktuellen Sprechers per Icon und mit einem blauen Rahmen. Dies sorgt dafür, dass die Oberfläche häufig aktualisiert werden muss. Mit zwei Optionen können diese Funktionen deaktiviert werden.

// /usr/share/jitsi-meet/interface_config.js
54: DISABLE_DOMINANT_SPEAKER_INDICATOR: true,
55: DISABLE_FOCUS_INDICATOR: 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

Sascha Moritz am 18. Januar 2021 um 08:37 Uhr

Hallo Tobias,
vielen Dank für diesen guten Artikel.

Mir ist aufgefallen das bei folgenden Einstellungen ein einfaches Anführungszeichen fehlt bei ’standard‘

277: minHeightForQualityLvl: {
278: 240: ’standard‘,
279: 360: ‚high‘
280: }
281: }

Gruß Sascha Moritz

Tobias am 20. Januar 2021 um 18:49 Uhr

Hallo Sascha Moritz,
Dankeschön für den Hinweis – ist korrigiert 😉
Grüße Tobias

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.