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=10 fixe le périphérique sur /dev/video10 pour éviter tout conflit avec une webcam réelle
  • card_label définit le nom affiché par les applications dans leur liste de caméras
  • exclusive_caps=1 est 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 dans v4l2-ctl mais 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.

Essayez CamLooper

Gratuit, 100 % local, opérationnel en moins d'une minute.

Télécharger CamLooper