.. title: Une fausse caméra Linux :name: v4l `Retour à la page Systèmes <../systeme.html>`__ .. contents:: .. _motivation: 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. .. _prerequis: 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: .. code:: make sudo make install sudo modprobe v4l2loopback # crée /dev/video0 Fournir une image (ici un coin d’écran) au périphérique créé: .. code:: # 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: .. code:: # 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 avec ``make 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 le ``README.md`` (je n’ai pas creusé); Pour aller plus loin -------------------- Cette petite présentation est très largement inspirée des articles suivants: - `Créer une fausse caméra `__ - le projet `v4l2loopback `__ - `tester une webcam `__ - Scénarios d’utilisation: https://github.com/umlaeute/v4l2loopback/wiki