Was ist ein Mensch? Virtueller Hintergrund in BBB.

In Zoom oder Skype kann man virtuelle Hintergründe erstellen oder den tatsächlichen Hintergrund verschwommen darstellen lassen. Das ist schön, wenn man weniger Privates von sich preisgeben möchte, und oft noch schöner, weil man Scherze damit treiben kann.

Warum geht das mit BigBlueButton nicht?

Kurz: Ich vermute, das liegt daran, dass man für BBB keinen eigenen Client, also kein eigenes Programm installieren muss, sondern das einfach in einem Browser laufen lassen kann.

Lang: Da muss ich ausholen.

Also: Mit einem geeigneten Programm kann man berechnen, was man zeigen möchte – Gesicht, Oberkörper, Arme, den Menschen halt. Den Rest ersetzt das Programm dann einfach durch grüne Farbe oder ein anderes Bild oder stellt es verschwommen dar – dieser zweite Punkt ist relativ leicht umzusetzen, und das sieht dann so aus:

Hintergrund verschwommen.
Hintergrund durch Grafik ersetzt. (Die grün ist.)

Schwierig ist der erste Schritt: Was gehört eigentlich zum Menschen und was nicht? Wenn man zusätzlich zur Kamera einen Infrarotsender und ‑empfänger hätte, könnte man ein Signal senden und aus der Dauer bis zum abgestrahlten Empfang berechnen, wie weit ein Bildpunkt von der Kamera entfernt ist. Dann könnte man zumindest Vorder- und Hintergrund unterscheiden und das als Hilfsmittel heranziehen; in dieser Form macht das etwa die Kinect für die XBox.

Aber diese Information hat man nicht. Also kann der Computer nicht messen, was zum Menschen gehört, sondern muss das allein anhand der Pixel, der Bildpunkte, entscheiden. Und das ist gar nicht leicht. Wenn man mit einem Bildbearbeitungsprogramm versucht, automatisiert einen Menschen auszuschneiden oder auch ein anderes Objekt, dann merkt man, wie schwer das ist.

Ich habe mich gefragt, wie das funktioniert. Auf Twitter hat man mir den Tipp gegeben, dass Gesichtserkennung dahinter steckt, also ein Algorithmus, der Gesichter erkennen kann und dann anhand zusammengehörender Flächen entscheidet, was am Gesicht noch alles dranhängt. Das kann man ausprobieren, wenn man in diesem System a) ein Cthulhu-Plüschmonster oder ein Blatt Papier vor das eigene Gesicht hält (der ganze Körper verschwindet, weil kein Mensch mehr erkannt wird) oder b) eine Guy-Fawkes-Maske (alles bleibt, weil die Maske als Gesicht erkannt wird).

Kein Foto von dem Blatt Papier. Weil, wenn’s funktioniert, dann sieht man ja genau nichts.

Man kann das auch testen, indem man die Maske dreht. Ab einem bestimmten Winkel zählt sie nicht mehr als Gesicht und verschwindet völlig. Man kann das natürlich auch testen, indem man das eigene Gesicht vor der Kamera um 90 Grad dreht und auf die Seite legt, oder noch mehr – ich hab’s ausprobiert, man sieht aber etwas blöd dabei aus. (Und vielleicht stimmt das auch alles gar nicht und es geht nicht um Gesichter, sondern um, uh, eine andere Form von Körpererkennung.)

Dieses Berechnen, was Gesicht ist und was nicht, ist aufwendig und kostet Rechenzeit. Wer Skype oder Zoom benutzt, installiert dazu meist einen Client, und der führt auf dem eigenen Rechner diese Berechnungen durch, bevor das so entstandene veränderte Bild an den Server geschickt wird. Wenn man kein eigenes Programm installiert, so wie das bei BigBlueButton der Fall ist, dann müsste man das unmanipulierte Bild an den Server schicken (sofern man nicht dem eigenen Browser die Berechnung aufdrücken würde, wofür der sich aber bedanken würde) und der Server müsste die Berechnungen durchführen, und zwar für alle Anwesenden in der Konferenz gleichzeitig. Das vermeidet BBB und deshalb bietet BBB dieses schöne Feature nicht an.

Aber…

…man kann diese Bildvorbereitung auch mit anderen Mitteln zuhause durchführen, das Bild also außerhalb von BBB manipulieren und erst das fertig bearbeitete Bild an BBB schicken. Damit kann man dann nämlich doch einen virtuellen Hintergrund in BBB erzeugen:

Screenshot aus BigBlueButton.

Dafür gibt es sicher einige Möglichkeiten. Meine habe ich aus diesem Youtube-Video, sie ist umständlich, tut mir leid. Im Video ist alles erklärt, hier unten halt einfach noch einmal in meinen Worten.

Ich brauche erstens ein Programm, das einen Algorithmus beherrscht, mit dem es Gesichter+Körper erkennen kann. Das ist zum Beispiel Skype, das man sich installieren kann:

Bei Skype kann man als Hintergrund auswählen “Blur” (der verschwommene tatsächliche Hintergrund) oder eine eigene Datei. Ich habe eine eigene Datei hinzugefügt, und zwar eine grüne Grafikdatei – kann man sich selber machen oder man googelt nach “greenscreen.png” oder so etwas. – Ich habe gleichzeitig bei den Einstellungen zu Audio und Video mein Bild entsättigt, so dass es in Grautönen dargestellt wird, einfach so als Spielerei.

Zweitens läuft gleichzeitig ein anderes Programm, das: a) das offene Skypefenster abfilmt, b) zusätzlich die grünen Elemente unsichtbar macht, c) dahinter eine andere Grafik sichtbar macht und und d) das Ergebnis als virtuelle Kamera zur Verfügung stellt. So wie es virtuelle Drucker gibt, die sich so verhalten wie Hardware-Drucker, in Wirklichkeit aber ein Programm sind, das das Druckergebnis in eine PDF-Datei ausgibt, gibt es auch virtuelle Kameras, die dem Betriebssystem vorgaukeln, sie seien eine ganz normale Kamera, hinter denen aber keine Hardware steckt.

Dieses andere Programm heißt OBS (Open Broadcaster Software) Studio. Damit kann man Erklärvideos erstellen; Youtuber nutzen das. Ich habe es ohnehin bei mir installiert, es ist allerdings sehr mächtig und deshalb gewöhnungsbedürftig.

OBS Studio funktioniert so, dass man mehrere Quellen für Bild oder Ton auswählt und speichert. Die ordnet man dann neben- oder übereinander an. So kann man Bild-in-Bild-Erklärvideos erstellen, oder gleichzeitig zum Beispiel ein Dokumentfenster, ein Kamerafensterchen und ein Programmfenster zeigen.

Die oben blau eingekastelte Quelle ist eine Fensteraufnahme eines offenen Fensters, und zwar des Skype-Fensters aus dem Screenshot oben. Das wird im Ganzen übernommen, also mit allem Text drumherum. Deshalb beschneide ich das noch mit einem Filter. Außerdem kommt ein Chroma-Filter darüber, der dafür sorgt, dass alles grüne durchsichtig wird. Die oben rot eingekastelte Quelle ist eine Medienaufnahme, und zwar eine Filmdatei auf der Festplatte. Das könnte auch ein gif oder ein normales Bild sein. (Zwei Stunden lang alte Superman-Cartoons in Dauerschleife kann ich sehr empfehlen. Viel Bewegung drin, satte Farben, expressive Formen.) Normalerweise liegen die rote und die blaue Quelle direkt übereinander, ich habe die rote im Screenshot verschoben, damit man das besser sieht.

Und zuletzt muss ich noch das Plugin “Virtual Camera” installieren, das mir erlaubt, die OBS-Ausgabe als Kamera zu benutzen. Hier beschrieben.

Geht das alles nicht einfacher? Vermutlich. So eine virtuelle Kamera mit integrierter Gesichts/Körpererkennung wird es doch wohl als fertiges Produkt zu kaufen geben? Aber mir reichen meine Bordmittel. (Nachtrag: Ja, klar, gibt Programme dazu, müsste nur den Namen suchen. Das hier ist eine, die habe ich aber nicht ausprobiert: https://www.xsplit.com/de/vcam. Und ein paar Kolleg:innen nutzen ein anderes Programm, aber wie gesagt, Name.)

Das nächste Mal vielleicht: wie ich live meine Stimme verändern kann…

6 Antworten auf „Was ist ein Mensch? Virtueller Hintergrund in BBB.“

  1. Hallo.

    Google meet läuft auch im Browser und man kann Hintergründe verwenden. Daran liegt es also nicht.

    Ivo

  2. Ich wollte genau Ivos Bemerkung machen. Aber Google kann natürlich auch serverseitig vier Tonnen Hardware auf das Problem werfen, während BBB ja meist irgendwo kleiner gehostet wird.

  3. Ich brauch das zwar nicht mehr, aber ich finde es hoch spannend. Danke, Thomas, für Deine technischen Blogbeiträge.
    Wenn mir langweilig ist – was praktisch nie vorkommt – kann ich ja ein wenig spielen.

  4. Gerne, Hauptschulblues.

    Gute Punkt, das mit Google – habe ich schon sehr lange nicht mehr benutzt. Weiß jemand, ob da die Berechnung lokal läuft, also im Browser, oder doch auf dem Server?

    (So eine lange Cartoon-Serie im Hintergrund laufen lassen, das geht aber nur lokal, denke ich.)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.