v4l2sink, v4l2loopback und obs-studio

Aktualisiert am 3.12.20

Ich will die Ausgabe von obs-studio nach jitsi streamen, da ich durch obs mehr und bequemere Möglichkeiten bekomme, um zwischen der eingebauten Kamera, dem Desktop und einzelnen Anwendungen, die man demonstrieren möche, zu wechseln. Dazu muss ich die Ausgabe von obs-studio an eine virtuelle Kamera weitergeben, die ich dann bei jitsi oder einem ähnlichen Dienst als Eingabe wähle, statt der eingebauten Kamera, die standardmäßig angewählt wird. Das ganze funktioniert stand 17.11.20 aber nur mit einem aktuellen obs-studio unter ubuntu 20.04 und später und nicht mit der Version aus den Repositories.

Dies installiert man wie folgt:

sudo apt install ffmpeg
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update
sudo apt install obs-studio

Man benötigt neben dem aktuellen obs-studio noch v4l2sink und v4l2loopback.

v4l2sink

Für v4l2sink gibt es im Internet ein deb-Paket, dass man runterladen kann und mit dpkg -i v4l2sink.deb installiert. Evtl muss noch die Datei in den richtigen Ordner verschoben werden. Dies geschieht mit:

sudo cp /usr/lib/obs-plugins/v4l2sink.so /usr/lib/x86_64-linux-gnu/obs-plugins/

v4l2loopback

Um v4l2loopback  ganze ans Laufen zu bekommen, muss man secure-boot auf dem Rechner abstellen. Warum, weiß ich nicht. Jedenfalls wird man dazu aufgefordert. Die Version von v4l2loopback aus den Repos von ubuntu 20.04 funktioniert nicht und muss gglfs deinstalliert werden mit sudo apt remove v4l2loopback-dkms und  ersetzt werden durch die aktuelle Version bei github, die wie folgt kompiliert und installiert werden muss:

sudo apt remove v4l2loopback-dkms
git clone --branch v0.12.5 https://github.com/umlaeute/v4l2loopback.git
cd v4l2loopback
make && sudo make install

Achtung: Hat man v4l2loopback bereits früher für einen anderen Kernel kompiliert. Muss man zunächst

make clean

aufrufen.

Die neue Datei v4l2loopback.ko kopiert man mit

sudo cp v4l2loopback.ko /lib/modules/$(uname -r)

in das korrekte Verzeichnis und kann sie nach einem depmod -a mit  sudo modprobe v4l2loopback starten.

Anschließend obs starten und unter Tools/Werkzeuge v4l2sink anwählen, den richtigen Videodevice (meist der letzte in der Liste) auswählen und starten. Jetzt kann man mit vlc testen, ob die Ausgabe von obs-studio an v4l2sink testen. Es sollte keine Fehlermeldung mehr kommen. Sieht man einen schwarzen Schirm und kein Bild der Kamera, dann ist in obs wahrscheinlich die falsche Szene aktiv.

Quellen: