v4l2loopback su Linux: installazione, persistenza ed errori comuni

Linux non include alcuna fotocamera virtuale. Le applicazioni aprono un dispositivo come /dev/video0 e ne leggono i fotogrammi, e il kernel si aspetta hardware reale dietro. v4l2loopback è un modulo del kernel che crea un dispositivo che si comporta come una fotocamera ma è alimentato via software.

È la base di ogni flusso di lavoro con fotocamera virtuale su Linux: OBS, le pipeline ffmpeg e CamLooper scrivono tutti in un dispositivo di loopback. Ecco come configurarlo per bene.

Installazione

Installa il pacchetto DKMS così che il modulo venga ricompilato automaticamente a ogni aggiornamento del kernel:

# Debian / Ubuntu
sudo apt install v4l2loopback-dkms

# Fedora / RHEL
sudo dnf install v4l2loopback

# Arch
sudo pacman -S v4l2loopback-dkms

Qui DKMS conta. Senza, il modulo viene compilato per il kernel che avevi al momento dell'installazione, e la tua fotocamera virtuale smette silenziosamente di funzionare dopo il successivo aggiornamento del kernel.

Caricare il modulo

sudo modprobe v4l2loopback

Verifica che il dispositivo esista:

lsmod | grep v4l2loopback
ls -l /dev/video*

Opzioni utili al caricamento:

sudo modprobe v4l2loopback \
  devices=1 \
  video_nr=10 \
  card_label="Virtual Camera" \
  exclusive_caps=1
  • video_nr=10 fissa il dispositivo su /dev/video10 così da non entrare in conflitto con una webcam reale
  • card_label imposta il nome che le applicazioni mostrano nel loro elenco di videocamere
  • exclusive_caps=1 è l'opzione decisiva: fa sì che il dispositivo dichiari la capacità di acquisizione solo quando qualcosa ci sta scrivendo. Chrome, Firefox e diverse app Electron ignorano i dispositivi di loopback che ne sono privi, ed è per questo che una fotocamera può essere visibile in v4l2-ctl e mancare nel browser

Farlo sopravvivere a un riavvio

modprobe dura fino al riavvio. Due file lo rendono permanente:

# /etc/modules-load.d/v4l2loopback.conf
v4l2loopback
# /etc/modprobe.d/v4l2loopback.conf
options v4l2loopback devices=1 video_nr=10 card_label="Virtual Camera" exclusive_caps=1

Il primo carica il modulo all'avvio; il secondo gli fornisce le opzioni. Capita spesso di scrivere solo il primo e poi chiedersi perché le opzioni siano sparite.

Provarlo senza alcuna applicazione

Invia un video in loop al dispositivo con ffmpeg:

ffmpeg -stream_loop -1 -re -i video.mp4 \
  -f v4l2 -pix_fmt yuv420p /dev/video10

-re scandisce il flusso in tempo reale (senza, ffmpeg scrive alla massima velocità e il risultato è inutilizzabile), -stream_loop -1 ripete all'infinito e yuv420p è il formato pixel che i consumatori di webcam si aspettano. Apri una pagina di test webcam nel browser e dovresti vedere il video.

Errori comuni

modprobe: ERROR: could not insert 'v4l2loopback': Required key not available

Secure Boot sta rifiutando il modulo non firmato. O registri una Machine Owner Key e firmi il modulo, oppure disattivi Secure Boot nel firmware. Le distribuzioni che forniscono una build firmata del modulo evitano del tutto il problema.

Il modulo si compila ma non compare alcun dispositivo /dev/video

Controlla dmesg | tail subito dopo il modprobe. Lì emerge un disallineamento di versione tra il modulo e il kernel in esecuzione, il segnale tipico che DKMS non ha ricompilato dopo un aggiornamento.

La fotocamera esiste ma i browser non la vedono

Carica il modulo con exclusive_caps=1. È di gran lunga la causa più comune.

Le app Flatpak non vedono la fotocamera

La sandbox blocca l'accesso ai dispositivi finché non lo concedi:

flatpak override --user --device=all com.obsproject.Studio

Saltare tutto questo

Tutto quanto sopra è una configurazione da fare una volta sola, ma resta una sessione di terminale e un riavvio prima di poter riprodurre un video come fotocamera — ed è il motivo per cui «usa OBS» è un consiglio più difficile su Linux che su Windows.

I pacchetti .deb e .rpm di CamLooper lo fanno per te. Dichiarano v4l2loopback-dkms come dipendenza, installano i file modules-load.d e modprobe.d mostrati sopra e caricano il modulo durante l'installazione, così la fotocamera è pronta quando l'installer finisce e di nuovo dopo ogni riavvio. Niente terminale, niente riavvio, e DKMS la mantiene funzionante tra un aggiornamento del kernel e l'altro.

Prova CamLooper

Gratuito, tutto in locale e pronto in meno di un minuto.

Scarica CamLooper