3 minutes
Videokonferenz unter Linux: Virtueller Hintergrund
Motivation
Was ich bei datenschutzfreundlichen Videokonferenz-Tools vermisse, ist die Möglichkeit, den Hintergrund des Webcam-Live-Bildes zu ersetzen, wie z.B. bei Zoom, Teams und anderen kommerziellen Anwendungen.
In Jitsi ist die Funktion zwar mit Status “beta” implementiert, funktioniert aber mehr schlecht als recht, wenn keine ordentliche Hardware-Beschleunigung durch proprietäre Grafiktreiber gewährleistet ist. Denn für die Funktion des Hintergrund-Ersetzens kommt machine learning via TensorFlow-Framework zum Einsatz, welches normalerweise effizient von modernen Grafikkarten-GPUs gestemmt wird. Existiert keine Schnittstelle zur Grafik-Hardware, übernimmt die CPU. Und die kommt mit solchen Berechnungen ganz schön ins Schwitzen. Ganz besonders leistungshungrig ist der Weichzeichenfilter (blurring), welcher bei Jitsi verwendet wird.
Wie cool wäre da eine Universallösung, welche mit Jitsi, BigBlueButton und weiteren Anwendungen funktionieren würde, welche auf die Webcam zugreifen?

Fundstück
Kürzlich bin ich über Benjamin Elders Blog-Artikel “Open Source Virtual Background” gestolpert. Mit Hilfe von OpenCV, dem TensorFlow GPU Backend, pyfakewebcam und v4l2loopback hat er ein fake (webcam) device implementiert, mit Hilfe dessen ein beliebiges Hintergrundbild in das Webcam-Livebild gerechnet werden kann… inklusive einem coolen Star Wars Hologramm-Effekt für das eigene Konterfei.
Benjamins skill level spiegelt sich deutlich in seinem Post wider. Daher ist das Projekt nicht einfach mal schnell mit ein paar Klicks und etwas Copy-Pasta nachgebaut.
Daniel Llewellyn hat sich dem Projekt angenommen, eine GUI programmiert, den gesamten inperformanten JavaScript-Code in Python neu geschrieben, weitere Teile optimiert und in ein Snap gepackt.
Mit ein paar Vorbereitungsschritten, funktioniert die Anwendung ohne viel Gefummel.
Installation
Meine Installationsanleitung bezieht sich auf Fedora. Für die Debian-Welt hat Daniel bereits vorgelegt.
Kernel-Headers
Zuerst sollte das System auf den aktuellen Stand gebracht werden.
sudo dnf update
Anschließend braucht es die Kernel-Headers, damit bei der Installation des v4l-Loopbacks gleich das v4l2loopback Kernel-Modul gebaut wird.
sudo dnf install kernel-headers
Das v4l2loopback Kernel-Modul
Während das Kernel-Modul in der Debian-Welt bereits in den Standard-Repos zu finden ist, sucht man es bei Fedora vergeblich. Zum Glück gibt es bereits ein betreutes COPR-Repo von sentry.
Aktivieren des COPR-Repos:
sudo dnf copr enable sentry/v4l2loopback && sudo dnf install v4l2loopback
Das Kernel-Modul wird gleich gebaut.
Konfiguration
Man erstellt eine Datei /etc/modprobe.d/fakecam.conf für ein paar Tweaks des Kernel-Moduls mit folgendem Inhalt:
options v4l2loopback devices=1 video_nr=20 card_label="fakecam" exclusive_caps=1
Das virtuelle Webcam-Device bekommt hier also den Namen fakecam.
Damit das Kernel-Modul beim Systemstart geladen wird, muss die Datei /etc/modules-load.d/fakecam.conf angelegt und mit folgendem Aufruf befüllt werden:
v4l2loopback
Zum Schluß das Modul neu laden
sudo modprobe -r v4l2loopback
sudo modprobe v4l2loopback
oder einfach rebooten.
Installation des fakecam Snaps
Zuguterletzt das fakecam Snap installieren.
Falls der Snap Paketmanager noch nicht installiert ist
sudo dnf install snapd
Dann
sudo snap install fakecam
Anwendung
Über die GUI lässt sich das Fakecam-Loop-Backend elegant konfigurieren.

Um das Device in beliebigen Anwendungen auswählen zu können, muss die Fakecam gestartet sein. Das Videobild wird per Default in der Auflösung 640x480 gestreamt. Wem das zu klein ist, muss per Konsole Hand anlegen. Die Einstellung für die Auflösung fehlt in der GUI leider noch.
fakecam --resolution 1280x720 --background /path/to/your/background.jpg --hologram --mirror
Der Befehl startet das fake-Device mit der Auflösung 1280x720, dem angegebenen Hintergrund, Hologramm-Effekt und gespiegeltem Bild.
Bedenke: Mit HD-Auflösung kriegt eine CPU ordentlich was zu tun! Für ein flüssiges Bewegtbild sollte die Schnittstelle zur GPU der Grafikkarte verfügbar sein (Stichwort: Tensor-Berechnungen). Für AMD-Grafikkarten sieht es da leider schlecht aus. Wer mit nvidia-Grafikkarte und proprietärem Treiber aufwarten kann, darf mir gerne mal berichten, wie flüssig das in HD und höher läuft.
fakecam tensorflow video4linux v4l2loop video conference privacy nerdism
558 Words
05.12.2020 - 19:24