Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
IP-Kamera als Webcam für Microsoft Teams, Zoom etc.

IP-Kamera als virtuelle Webcam

Unter Linux lässt sich eine IP-Kamera vergleichsweise einfach als Webcam einbinden. Möglich macht das die Video-Schnittstelle Video4Linux2 (V4L2). Neben zahlreichen USB-Webcams, TV-Karten und ähnlichen Geräten können auch RTSP-Streams (Real-Time Streaming Protocol) von IP-Kameras genutzt werden.

Klassische Videochat-Programme wie Skype oder Zoom können mit RTSP-Streams jedoch nichts anfangen; sie erwarten ein Gerät im Betriebssystem. V4L2 erlaubt das Anlegen sogenannter Loopback-Devices. Diese virtuellen Geräte täuschen den Anwendungen eine lokal angeschlossene Kamera vor.

Im Folgenden zeige ich exemplarisch, wie ein RTSP-Stream als virtuelle Kamera unter Ubuntu eingebunden wird. Das Beispiel versteht sich als Machbarkeitsstudie, nicht als vollständige Anleitung für den Produktivbetrieb. Die Latenz des Videobildes war für meinen Geschmack zu hoch – sie hängt u. a. stark vom Kameramodell und der Netzwerkverbindung ab.

1. Installation der benötigten Software

Alle Pakete stehen in den Standard-Archiven von Ubuntu/Debian bereit und lassen sich direkt per Kommandozeile installieren:

  • v4l2loopback-dkms – Kernel-Modul zum Anlegen virtueller Video-Geräte
  • v4l-utils – Werkzeuge wie v4l2-ctl zur Steuerung der V4L2-Treiber
  • ffmpeg – mächtiges CLI-Tool zum Aufnehmen, Konvertieren und Streamen von Audio/Video

Installation (mit sudo):

sudo apt install v4l2loopback-dkms v4l-utils ffmpeg

Hinweise des Paketmanagers zur Installation zusätzlicher Abhängigkeiten können bestätigt werden.
Quellen des Loopback-Moduls: https://github.com/umlaeute/v4l2loopback

2. Kernel-Treiber einbinden

Dank DKMS (Dynamic Kernel Module Support) wird das manuell installierte Modul bei Kernel-Updates automatisch neu gebaut.

Modul laden:

sudo modprobe v4l2loopback

Prüfen, ob das Modul geladen ist:

lsmod | grep "v4l2loopback"

Beispielausgabe:

v4l2loopback           40960  1
videodev              237568  2 v4l2loopback

Mehrere virtuelle Geräte anlegen (z. B. drei Stück):

sudo modprobe v4l2loopback devices=3

Die Geräte erscheinen unter /dev/videoX. Auflisten mit:

v4l2-ctl --list-devices

Beispiel:

Dummy video device (0x0000) (platform:v4l2loopback-000):
    /dev/video0

Taucht das virtuelle Gerät nicht auf, ist bei der Modulintegration etwas schiefgelaufen und die Ursache muss geprüft werden.

3. RTSP-Videostrom zur virtuellen Webcam streamen

Zum Einspeisen des Kamerastreams in /dev/video0 verwenden wir FFmpeg. Das Tool bietet viele Optionen zum Anpassen von Qualität und Latenz.

Annahme:
Die IP-Kamera hat die Adresse 192.168.80.100, liefert RTSP auf Port 554 ohne Authentifizierung, und der Hauptstream ist unter /11 erreichbar:

ffmpeg -rtsp_transport tcp -i rtsp://192.168.80.100:554/11 -pix_fmt yuv420p -f v4l2 /dev/video0

Ausgabe (gekürzt):

Input #0, rtsp, from 'rtsp://192.168.80.100:554/11':
  Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1280x720, 15 fps
  Stream #0:1: Audio: pcm_mulaw, 8000 Hz, mono
Output #0, video4linux2,v4l2, to '/dev/video0':
  Stream #0:0: Video: rawvideo (I420), yuv420p, 1280x720, 15 fps
Press [q] to stop, [?] for help

Der RTSP-Pfad variiert je nach Hersteller/Modell der IP-Kamera, ggf. bitte die Dokumentation prüfen.
FFmpeg-Parameter lassen sich - je nach Anforderung - weiter tunen.

4. Test der virtuellen Webcam

Zum schnellen Test nutze ich ffplay (Teil von FFmpeg):

ffplay /dev/video0

Erscheint das Video träge, helfen Latenz-optimierte Optionen:

ffplay /dev/video0 -fflags nobuffer -flags low_delay -framedrop

Kurz erklärt:

  • nobuffer: reduziert Analyse-Pufferung zu Beginn
  • low_delay: erzwingt geringe Verzögerung
  • framedrop: verwirft Frames, wenn die Wiedergabe nicht synchron ist

5. Autostart via systemd

Standardmäßig endet das Streaming, sobald FFmpeg beendet wird; nach einem Neustart muss außerdem das v4l2loopback-Modul erneut geladen werden.
Dafür nutze ich zwei systemd-Units unter /etc/systemd/system.

sudo nano /etc/systemd/system/v4l2.service
[Unit]
Description=Create_loopback_device

[Service]
ExecStart=modprobe v4l2loopback
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

 

sudo nano /etc/systemd/system/ipcam.service
[Unit]
Description=Stream_IPcam_to_virtual_webcam
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=ffmpeg -rtsp_transport tcp -i rtsp://192.168.80.100:554/11 -pix_fmt yuv420p -f v4l2 /dev/video0
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Wichtig: ipcam.service wartet auf eine vorhandene Netzwerkverbindung (network-online.target).

Zur dauerhaften Aktivierung der Skripte:

sudo systemctl daemon-reload 
sudo systemctl enable v4l2.service
sudo systemctl enable ipcam.service

Nach einem Neustart steht die IP-Kamera automatisch als virtuelle Webcam /dev/video0 bereit.

Optionaler Praxis-Hinweis:
Für dauerhaften Betrieb ist bei ipcam.service oft Type=simple plus Restart=on-failure sinnvoll, damit FFmpeg als Dienst im Vordergrund läuft und bei Fehlern neu gestartet wird.

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.