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

Christian am 1. Februar 2021 um 19:02 Uhr

Hallo Tobias,

danke für den Artikel. Ich bin darauf gestoßen, weil ich Informationen über das Einbinden von H.264-Streams suche.

Weißt Du, ob es in Jitsi möglich ist, neben der Standardauflösung für die Videostreams eine weitere Konfiguration für einen separaten Videostream zu konfigurieren, der sehr viel höher auflöst und so das Abfilmen einer großen Tafel ermöglicht?

Ich möchte nicht die Auflösung aller Videostreams hoch setzen, da dadurch das Netzwerk zu sehr belastet werden würde.

Viele Grüße
Christian

Tobias am 3. Februar 2021 um 08:02 Uhr

Hallo Christian,
ich würde die Tafel filmen, auf dem Rechner in Vollbild darstelle und dann die Bildschirmfreigabe aktivieren. Es ist zwar nicht die flüssigste Variante, aber für einen Tafelaufschrieb passend und erreicht die Auflösung des Monitors – zum Beispiel FullHD. Wenn ein eigener Server betrieben wird, kann noch die Anzahl der Bilder pro Sekunde in der Konfiguration erhöht werden.
Grüße Tobias

Thomas Birk am 18. Februar 2021 um 22:49 Uhr

Hallo und Hilfe!

Da ich v.a. eine sehr schlechte upload-Netzverbindung habe, suche ich den
ultimativ auf Bandbreitenersparnis getrimmten jitsi-Server, also wenn möglich mit reduzierter NF-Bandbreite = Audiobandbreite.

Video schalte ich sowieso immer gleich ab, und bitte auch darum nicht den Firefox zu benutzen.

Ich selbst bin noch nicht so weit, dass ich einen Server aufsetzen könnte. Brauch man dazu nicht ein hoster?

Grüsse
Thomas

Tobias am 20. Februar 2021 um 18:06 Uhr

Hallo Thomas,
genau – du müsstest dir bei einem Anbieter einen Server anmieten. Arbeite dich davor aber gut in das Thema Root-Server ein. In der Konfiguration gibt es eine Möglichkeit der Bitrate der Audioübertragung zu reduzieren.
Grüße Tobias

Roland am 1. April 2021 um 08:27 Uhr

Hallo Tobias,
vielen Dank für diese wirklich toll gemachte Seite !

Eine Frage hätte ich zur Einstellung der Video -Thumbnails. Gibt es eine Möglichkeit alle Teilnehmer ohne Kamerabild einfach auszublenden, um bei grösseren Gruppen etwas mehr Platz auf dem Bildschirm zu gewinnen? Lässt sich so etwas mit einem selbst aufgesetzten Server realisieren?

Vielen Dank

Tobias am 4. April 2021 um 14:11 Uhr

Hallo Roland,
das geht nur mit einem eigenen Server. Dazu müsste zumindest der CSS-Code angepasst werden.
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.