OBS Studio, Linux et webcam virtuelle, c’est pas si dur !

Twitter Facebook Google Plus Linkedin email

Récemment, pour permettre de faire quelque chose d’un peu choupi lors des conférences vidéos avec la famille, j’ai commencé à jouer avec ma toute récente webcam et OBS pour faire un mix partage d’écran/webcam à diffuser dans Skype ou Framatalk. Si sous Windows le setup a été assez rapide, ça a évidemment pris un peu plus de temps sous Linux. Mais, ce n’est pas aussi compliqué !

OBS ?

Pour les néophytes, OBS Studio est un logiciel permettant d’enregistrer et/ou de diffuser en direct l’activité de son bureau. On peut composer des scènes incluant plusieurs sources audio et vidéo (fenêtres d’applications/jeux, webcam, etc), faire des transitions entre les scènes, ce genre de choses. Si vous avez déjà vu des « streamers », notamment sur Twitch, il y a de grandes chances qu’ils utilisent OBS, ou un de ses dérivés. Car OBS est open-source !

J’ai déjà peu de temps pour écrire régulièrement sur ce blog, alors vous n’êtes pas prêt de voir ma tronche en stream (ou alors ça sera par accident). Mais OBS n’est pas réservé à la diffusion sur Twitch (surtout que désormais, c’est aussi possible sur PeerTube !), vous pouvez juste l’utiliser pour l’enregistrement, ou alors pour la diffusion dans des logiciels plus standards via le système de webcam virtuelle. Et comme on va le voir, tout le monde n’est pas logé à la même enseigne, une fois de plus.

Sous Windows

Ça va être très rapide, sous Windows, il y a un bouton pour ça directement intégré :

Une fois cliqué dessus, il suffit de sélectionner la webcam dans votre logiciel de discussion préféré :

Si seulement ça pouvait être pareil sur la banquise…

Sous Linux

Pour refaire la même sur le PC du boulot, j’installe OBS Studio, et là, pas de bouton webcam virtuelle. Petite déception supplémentaire. Oui, c’est moins souple, et c’est dommage. Il faut dire qu’il manque un ou deux morceaux pour que ça fonctionne parfaitement.

Je tiens à signaler que la simplicité de ce qui suit tient principalement à Manjaro, et la puissance d’AUR. Je n’ai en effet eu à qu’installer quelques paquets pour que ça cuise. Il n’est pas exclus que vous soyez obligé de bosser un peu plus sur vos distributions.

D’abord, il faut installer v4l2loopback-dkms, ça permet d’avoir un module noyau qui sera tenu à jour à chaque mise à jour dudit noyau, et ce pour tous les noyaux installés. Pour moi, c’était juste un petit yay -S v4l2loopback-dkms. Ensuite, on fait un listing des périphériques dans /dev :

Ici j’en ai déjà plusieurs parce que j’ai déjà une webcam intégrée, ma webcam externe, et DroidCam qui en installe deux, me demandez pas pourquoi.

Installer le module ne suffit pas pour le rendre opérationnel de suite, il faut le charger pour qu’il génère un périphérique virtuel; c’est un module noyau, c’est simple : sudo modprobe v4l2loopback. On vérifie ensuite le « numéro » de périphérique rajouté :

V4L2 est le « cadre » qui permet de gérer les périphériques de capture vidéo sous Linux, et notamment les webcam. Le module « loopback » permet de créer un périphérique virtuel à partir d’une source pas forcément prévue pour au départ, ce qui permettra d’injecter la source dans un logiciel qui ne saurait pas l’exploiter directement. Comme les logiciels de discussions qui se limitent aux webcams, par exemple. À noter qu’il est possible de passer des options au chargement du module pour avoir plusieurs périphériques à disposition, mais pas besoin ici, sinon, lisez la doc 🙂

Maintenant, il faut se pencher sur OBS. J’avais commencé à écrire cet article en utilisant le plugin obs-v4l2sink, installé là aussi via yay, avec petite capture d’écran sur comment on paramètre récupère le machin. Le temps que je rédige correctement, et que je m’occupe de faire les captures d’écran (sur le PC du boulot, je comptais utiliser le setup pour Teams), une mise à jour d’OBS m’a ajouté le bouton comme sous Windows. La subtilité, c’est qu’il faut quand même v4l2loopback. Et surtout, quand on clique sur le bouton, il demande de rentrer le mot de passe parce que, on l’a vu plus haut, le chargement du module passe par sudo (eh oui, il faut être administrateur pour taper dans le noyau). Avec v4l2sink, la caméra virtuelle s’appelle « Dummy », ici, c’est comme sous Windows :

La vidéo, c’est lourd

Dans l’absolu, la gestion de flux vidéos est particulièrement consommatrice de ressources. Si dans OBS, l’encodage pour la diffusion ou l’enregistrement peut être pris en charge par le GPU, le CPU reste quand même vite mis à rude épreuve. Il est donc compliqué de recommander ce genre de setup sur des machines soit déjà chargées (et avec Microsoft Teams, autant vous dire que c’est Bagdad), soit peu puissantes. Dans ces cas-là, si les logiciels le permettent, autant reposer directement sur les fonctions intégrées de partage d’écran si c’est l’usage que vous voulez apporter via OBS.

Et encore, j’ai même pas parlé de la diffusion, qui demande un réseau solide, même avec des encodages et des protocoles propres, entre les WiFi saturés et ceux qui sont encore coincés avec l’ADSL, dont l’upload disqualifie directement l’usage de la diffusion vidéo, qui se fera au détriment de tous les autres usages de la connexion.

le plus récent le plus ancien
Notifier de
faxmodem
Invité
faxmodem

On peut aussi utiliser ffmpeg pour des choses simples (compositage, mosaics, …) qui sera moins consommateur (et plus facilement automatisable)