Une fausse caméra Linux
Motivation
Le confinement a provoqué un regain d’intérêt pour les visioconférences. Mais si vous n’avez pas (ou ne souhaitez pas avoir) de caméra, vos interlocuteurs peuvent trouver frustrant de ne rien voir venant de vous.
C’est ainsi qu’est venu le besoin de «créer» une caméra virtuelle, qui redirigerait une partie de l’écran vers mes interlocuteurs, pour leur montrer ou bien une photo, ou bien un document en fonction de l’humeur.
Prérequis
les sources du projet v4l2loopback qui assure l’essentiel de la magie;
un noyau Linux suffisamment récent, et les en-têtes (package
kernel-devel
pour ma distribution) qui vont avec;(option) le package
ffmpeg
que j’utilise pour jouer avec cette «caméra» une fois qu’elle sera créée;
Mode d’emploi
Charger les sources, compiler puis charger le module noyau:
make sudo make install sudo modprobe v4l2loopback # crée /dev/video0
Fournir une image (ici un coin d’écran) au périphérique créé:
# Utiliser ffmpeg pour envoyer une capture à /dev/video0 ffmpeg -f x11grab -r 15 -s 1280x720 -i :0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
Contrôler ce que voit votre caméra virtuelle:
# Capturer l’image pour voir contrôler le résultat ffplay /dev/video0
La commande la plus complexe était donc celle qui capture la video pour la caméra. Le manuel ffmpeg
explique les options:
-f x11grab
: [format]-r 15
: [rate] Nombre d’images par seconde-s 1280x720
: [size] Taille de l’image, à partir du coin supérieur gauche-i :0
: [input] Fournisseur de l’image. Ici écran 0 de X11
Problèmes et compléments
Si on met à jour le noyau de Linux, il faut recompiler et réinstaller.
Les packages systèmes complémentaires:
v4l2-ctl : fourni par v4l-utils
v4l2loopback-ctl : comme le
make
ci-dessus, mais avecmake install-utils
Problèmes et bugs:
pour des résolutions > 1280x720, les couleurs sont perturbées; - il faut peut-être utiliser
v4l2loopback-ctl
comme indiqué dans leREADME.md
(je n’ai pas creusé);
Pour aller plus loin
Cette petite présentation est très largement inspirée des articles suivants:
le projet v4l2loopback
Scénarios d’utilisation: https://github.com/umlaeute/v4l2loopback/wiki