Dolu

v4l – podpora WebKamer

Virtuální kamera

Simuluje klasickou WebKameru aplikacím. Tvoří rozhraní, kde vstupem je aplikace (například OBS studio)která posílá obraz do této „virtuální kamery“ (/dev/videoX), a z této výstup je pak vstupem další aplikaci (například pro Zoom, jako klasická WebKamera).

Instalace

💻 sudo apt install v4l2loopback-dkms

Příklad vytvoření dvou virtuálních kamer

Například Virt. Kam. video10 jako zařízení /dev/video10 a druhou Virt. Kam. video20 jako zařízení /dev/video20

💻 sudo modprobe v4l2loopback video_nr=10,20 card_label="Virt. Kam. video10","Virt. Kam. video20" exclusive_caps=1

Kontrola vytvoření virtuálních kamer

💻 v4l2-ctl --list-devices

Výpis:

Virt. Kam. video10" (platform:v4l2loopback-010):
  /dev/video10

"Virt. Kam. video20 (platform:v4l2loopback-020):
  /dev/video20

Test virtuální kamery

Zobrazení pomocí ffmpeg, kde je vstupem fyzická webkamera /dev/video0 a výstupem virtuální /dev/video10 (ukončení [Ctrl])

💻 ffmpeg -i /dev/video0 -vcodec rawvideo -pix_fmt yuv420p -vsync 2 -threads 0 -f v4l2 /dev/video10

Zobrazení obrazu z virtuální kamery

💻 ffplay /dev/video10

Automatická aktivace virtuální kamery po staru systému

Definice:

💻 sudo mousepad /etc/modprobe.d/v4l2loopback.conf

Vložit:

options v4l2loopback video_nr=10,20 card_label="Virt. Kam. video10","Virt. Kam. video20" exclusive_caps=1

Automatická aktivace:

💻 sudo mousepad /etc/modules-load.d/v4l2loopback.conf

Vložit:

v4l2loopback

Ruční aktivace pro otestování konfigurace:

💻 sudo systemctl restart systemd-modules-load.service

Kontrola načtení modulu:

💻 lsmod | grep v4l2loopback

Výpis:

v4l2loopback           61440  0
videodev              360448  4 videobuf2_v4l2,v4l2loopback,uvcvideo

Kontrola vytvoření virtuálních kamer:

💻 v4l2-ctl --list-devices

Výpis:

Virt. Kam. video10" (platform:v4l2loopback-010):
  /dev/video10

"Virt. Kam. video20 (platform:v4l2loopback-020):
  /dev/video20

Dektivace virtuálních kamer

💻 sudo modprobe -r v4l2loopback

V případě chyby „ERROR: could not insert ‚v4l2loopback‘: Bad address“ 🆘

postup viz.  https://github.com/umlaeute/v4l2loopback