v4l2loopback sous Linux : installation, persistance et erreurs courantes
Linux n'intègre aucune caméra virtuelle. Les applications ouvrent un périphérique tel que /dev/video0 et y lisent des images, et le noyau s'attend à trouver du matériel réel derrière. v4l2loopback est un module noyau qui crée un périphérique se comportant comme une caméra mais alimenté par logiciel.
C'est la base de tout flux de travail avec caméra virtuelle sous Linux : OBS, les chaînes ffmpeg et CamLooper écrivent tous dans un périphérique de bouclage. Voici comment le configurer correctement.
Installation
Installez le paquet DKMS pour que le module soit recompilé automatiquement à chaque mise à jour du noyau :
# Debian / Ubuntu
sudo apt install v4l2loopback-dkms
# Fedora / RHEL
sudo dnf install v4l2loopback
# Arch
sudo pacman -S v4l2loopback-dkms
DKMS est essentiel ici. Sans lui, le module est compilé pour le noyau présent au moment de l'installation, et votre caméra virtuelle cesse silencieusement de fonctionner après la mise à jour suivante du noyau.
Charger le module
sudo modprobe v4l2loopback
Vérifiez que le périphérique existe :
lsmod | grep v4l2loopback
ls -l /dev/video*
Options utiles au chargement :
sudo modprobe v4l2loopback \
devices=1 \
video_nr=10 \
card_label="Virtual Camera" \
exclusive_caps=1
video_nr=10fixe le périphérique sur/dev/video10pour éviter tout conflit avec une webcam réellecard_labeldéfinit le nom affiché par les applications dans leur liste de camérasexclusive_caps=1est l'option déterminante : elle fait que le périphérique n'annonce sa capacité de capture que lorsque quelque chose y écrit. Chrome, Firefox et plusieurs applications Electron ignorent les périphériques de bouclage qui en sont dépourvus — d'où une caméra visible dansv4l2-ctlmais absente du navigateur
Le rendre persistant après un redémarrage
modprobe ne dure que jusqu'au redémarrage. Deux fichiers le rendent permanent :
# /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
Le premier charge le module au démarrage ; le second lui fournit ses options. On n'écrit fréquemment que le premier, avant de se demander pourquoi les options ont disparu.
Le tester sans aucune application
Envoyez une vidéo en boucle vers le périphérique avec ffmpeg :
ffmpeg -stream_loop -1 -re -i video.mp4 \
-f v4l2 -pix_fmt yuv420p /dev/video10
-re cadence le flux en temps réel (sans cette option, ffmpeg écrit aussi vite qu'il peut et le résultat est inexploitable), -stream_loop -1 répète indéfiniment, et yuv420p est le format de pixel attendu par les consommateurs de webcam. Ouvrez une page de test de webcam dans votre navigateur : la vidéo doit s'afficher.
Erreurs courantes
modprobe: ERROR: could not insert 'v4l2loopback': Required key not available
Secure Boot rejette le module non signé. Soit vous enregistrez une Machine Owner Key et signez le module, soit vous désactivez Secure Boot dans le firmware. Les distributions qui fournissent une version signée du module évitent complètement ce problème.
Le module se compile mais aucun périphérique /dev/video n'apparaît
Consultez dmesg | tail juste après modprobe. Une incompatibilité de version entre le module et le noyau en cours d'exécution y apparaît : c'est le signe habituel que DKMS n'a pas recompilé après une mise à jour.
La caméra existe mais les navigateurs ne la voient pas
Chargez le module avec exclusive_caps=1. C'est de loin la cause la plus fréquente.
Les applications Flatpak ne voient pas la caméra
Le bac à sable bloque l'accès aux périphériques tant que vous ne l'autorisez pas :
flatpak override --user --device=all com.obsproject.Studio
Se passer de tout cela
Tout ce qui précède est une configuration à faire une seule fois, mais cela reste une session de terminal et un redémarrage avant de pouvoir diffuser une vidéo comme caméra — et c'est pourquoi « utilise OBS » est un conseil plus difficile à suivre sous Linux que sous Windows.
Les paquets .deb et .rpm de CamLooper s'en chargent pour vous. Ils déclarent v4l2loopback-dkms comme dépendance, installent les fichiers modules-load.d et modprobe.d montrés plus haut, et chargent le module pendant l'installation : la caméra est donc prête dès la fin de l'installateur, et de nouveau après chaque redémarrage. Sans terminal, sans redémarrage, et DKMS la maintient fonctionnelle au fil des mises à jour du noyau.