Utiliser son smartphone comme une webcam avec OBS

Image d'une visio-conférence jitsi
* visio-conférence avec scène OBS

Dans un premier article, nous avons vu comment utiliser un appareil photo comme une webcam. Nous allons passer ici au niveau supérieur un utilisant notre smartphone comme une webcam ! Nous allons voir trois façons de procéder. La première consiste à n'utiliser que du logiciel libre tandis que la seconde et la troisième utiliseront une application android non libre.

L'article ne traite que d'une mise en place avec un téléphone android sous une distribtion gnu/linux. Il devrait être possible de faire la même chose avec d'autres systèmes d'exploitation. Le logiciel Open Broadcaster Software que nous utiliserons est disponible pour les plateformes macOS, windows et gnu/linux.

Le graal !

Nous souhaitons filmer avec notre téléphone et récupérer le flux (avec ou sans fil) sur notre ordinateur. Ce flux sera ensuite envoyé au logiciel Open Broadcaster Software (OBS) pour un traitement de l'image (colorimétrie, fond vert…). Nous pourrons alors utiliser l'image du smartphone pré-produite pour une visio conférence, un streaming ou un enregistrement.

Voici un aperçu des étapes que nous avons à franchir :

Image d'un graphique de flux
* graphique de flux

Récupérer le flux du téléphone

La version libre

* Scène OBS via scrcpy

Plutôt que de diffuser le flux de la caméra, nous allons nous servir d' une astuce ! Nous utiliserons un logiciel de clonage d'écran puis nous démarrerons le logiciel de photo sur notre ordiphone.

Pour effectuer cette tâche nous utiliserons le logiciel scrcpy (screen copy) qui est libre, gratuit et disponible pour les 3 plateformes. Il faudra également penser à activer les options développeurs puis à activer le débogage usb sur le smartphone.

Le menu des options dévoloppeur est un menu caché dans android. Pour le révéler vous devez aller dans à propos du téléphone et tapoter 7 fois sur le numéro de build. Le menu apparaîtra alors dans les paramètres système. Entrez dans ce menu et activez l'option débogage usb.

En plus de scrcpy, Il faut également installer les paquets adb pour accéder au smartphone.

sudo apt install scrcpy adb

- Avec un cable usb

Une fois l'installation terminée, branchez votre téléphone en usb puis allez dans un terminal et tapez :

scrcpy

Après une demande de validation sur votre téléphone, votre écran de téléphone s'affichera sur votre écran d'ordinateur. Certaines options peuvent vous intéresser pour spécifier la résolution, la largeur et la hauteur de la fenêtre, retirer les bordures de fenêtre ou mettre l'application toujours au premier plan. D'autres options sont disponibles sur le site du projet. N'hésitez pas à rémunérer son auteur !

scrcpy --window-x 1920 --window-y 1080 --window-width 1920 --window-height 1080  --window-borderless --always-on-top

- Sans fil

Assurez vous que le téléphone partage le même réseau wifi que votre ordinateur. Récupérez l'adresse ip de votre smartphone dans les paramètres, à propos du téléphone et état. Ici nous utiliserons 192.168.0.1 pour l'exemple.

Branchez votre téléphone en usb puis allez dans un terminal et tapez :

adb tcpip 5555

Débranchez votre téléphone puis tapez :

adb connect 192.168.0.1

Votre téléphone est maintenant connecté sans fil. Vous pouvez utiliser scrcpy de la même façon que précédemment. Pour repasser en mode usb il suffit de taper :

  adb usb

Pour récupérer le flux de l'appareil photo, je vous conseille d'utiliser l'application Open Camera qui permet dans ses options le masquage de l'interface (osd) afin d'obtenir uniquement l'image de la caméra.

La première version non libre

Image de ffplay récupérée dans OBS
* Scène OBS via IpWebcam et ffplay

Il existe une application android nommée IP-Webcam qui permet de filmer et de diffuser en direct via une adresse ip. Ce flux peut être récupéré dans un navigateur web ou dans une application de type VLC ou ffplay. L'application possède une version gratuite avec publicités et limitations, la version payante est à 5,49 €.

Assurez-vous que votre téléphone soit sur le même réseau que votre ordinateur puis démarrez le serveur ip Webcam. Démarrez VLC puis ouvrir un flux réseau et tapez l'adresse qui s'affiche dans l'application : https://192.168.0.118:8080/video. VLC affichera alors l'image de votre photophone. Vous pouvez également taper l'adresse dans votre navigateur web sans video pour retrouver une interface de contrôle (zoom).

Retrouvez plus d'information sur IP-Webcam grâce à la fiche Analyse vidéo en temps réel que nous avons créée.

Vous pouvez également utiliser le terminal pour effectuer la même chose :

  cvlc https://192.168.0.118:8080/video

Vous pouvez également utiliser le lecteur ffmpeg par défaut en précisant la nature du flux et le nombre d'images par seconde.

  ffplay https://192.168.0.118:8080/video -f mjpeg -framerate 30

La seconde version non libre

Il est également possible d'installer une application mieux intégrée à OBS mais qui ne diffusera son flux qu'à travers OBS. Aucune possibilité de récupérer le flux par VLC ou ffplay pour d'autres usages. Cette application est DroidCam OBS dont la version gratuite limite les résolutions et ajoute un marquage au milieu de l'écran. La version payante coûte 5,49€ via un achat dans l'application.

Utiliser le flux comme source

Commencez par installer le logiciel obs-studio.

  sudo apt install obs-studio

Ouvrez le logiciel et cliquez sur le signe + dans la fenêtre Sources puis ajoutez la fenêtre VLC ou ffplay qui contient votre flux.

Votre photophone diffuse alors directement dans votre scène !

Dans le cas de DroidCam OBS, il faudra ajouter un plugin dans OBS pour bénéficier de l'ajout d'une source DroidCam OBS. Ce plugin est disponible pour toutes les plateformes. Il suffit alors de démarrer l'application sur le téléphone puis d'indiquer l'adresse ip affichée sur le téléphone dans le plugin du logiciel.

Créer une webcam usb virtuelle dans le système d'exploitation

Dans cette partie nous souhaitons que le flux traité par OBS se comporte comme un périphérique usb. Nous pourrons l'utiliser comme caméra sur n'importe quel service de diffusion. De cette façon, nous pourrons faire de la visio-conférence sur fond vert, changer la colorimétrie de notre image, appliquer un filtre audio pour améliorer la qualité sonore, ajouter un logo… bref, faire tout ce qu'il est possible de faire avec OBS-studio.

Le principe est de créer une caméra virtuelle qui donnera l'illusion à l'ordinateur qu'une webcam est branchée en usb.

Pour créer une webcam virtuelle, installez le module noyau suivant :

  sudo apt install v4l2loopback-dkms

Pour activer le module vous pouvez le faire à la demande via la commande :

  sudo modprobe v4l2loopback devices=1 video_nr=3 card_label="OBS Cam" exclusive_caps=1

Cette commande en plus d'activer le module, créera la webcam /dev/video3 qu'elle nommera OBS Cam. La dernière option facilite la compatibilité avec les navigateurs. Il est possible d'ajouter plusieurs caméras en séparant les numéros et labels par des virgules : nr=3,4 card_label="OBS Cam","Secondary Cam".

Vous pouvez activer le module de façon permanente via deux fichiers de configuration qui rendront le module opérationnel au démarrage de la machine.

Le premier est /etc/modules-load.d/v4l2loopback.conf et contient :

v4l2loopback

Vous pouvez le créer directement par la commande :

sudo echo "v4l2loopback" > /etc/modules-load.d/v4l2loopback.conf

Le second est /etc/modprobe.d/v4l2loopback.conf et contient :

options v4l2loopback devices=1 video_nr=3 card_label="OBS Cam" exclusive_caps=1

Vous pouvez le créer directement par la commande :

sudo echo "options v4l2loopback devices=1 video_nr=3 card_label="OBS Cam" exclusive_caps=1" > /etc/modprobe.d/v4l2loopback.conf

Ajout d'un plugin pour connecter OBS à la webcam virtuelle

Si votre version d'OBS est supérieure à la version 26.1 sortie le 14 décembre 2020, alors la webcam virtuelle est intégrée par défaut dans le logiciel. Cette partie s'adresse donc aux personnes ayant une version antérieure.

Il existe un plugin OBS qui crée cette caméra virtuelle. Pour la plateforme Windows vous le trouverez ici, pour la plateforme macOS vous trouverez les indications .

En ce qui concerne Gnu/Linux, nous allons devoir compiler le plugin. N'ayez pas peur, c'est très simple.

Commençons par installer les dépendances nécessaires :

sudo apt install git qtbase5-dev libobs-dev && sudo snap install cmake

En fonction de la distribution, l'installation de cmake peut être différente. snap est une particularité de la distribution Ubuntu.

Il faut ensuite récupérer le code de obs-studio :

git clone --recursive https://github.com/obsproject/obs-studio.git

Enfin nous pouvons récupérer le code du plugin et le compiler (Exécutez les lignes une par une) :

git clone https://github.com/CatxFish/obs-v4l2sink.git
cd obs-v4l2sink
mkdir build && cd build
cmake -DLIBOBS_INCLUDE_DIR="../../obs-studio/libobs" -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install

Si le plugin ne s'installe pas à la bonne place vous devrez le recopier au bon endroit :

sudo cp /usr/lib/obs-plugins/v4l2sink.so /usr/lib/x86_64-linux-gnu/obs-plugins/

Démarrez le logiciel OBS-studio et dans le menu Outils vous devriez voir apparaître l'option V4L2 Video Output. Démarrez le serveur et activez autostart si vous souhaitez que l'activation soit systématique au démarrage du logicel.

Image de la fenêtre v4l2 Video Output
* Option v4l2 Video Output

Diffuser la vidéo produite en visio conférence

Si tout fonctionne correctement vous devriez être en mesure de choisir OBS Cam comme périphérique USB dans votre logiciel de streaming, c'est gagné !

Si vous souhaitez utiliser votre scène OBS dans un partage d'écran plutôt que comme une webcam, il suffit de faire un clic droit sur votre scène dans OBS puis de choisir projecteur fenêtré. Une fenêtre s'ouvrira avec le flux et vous pourrez la choisir comme fenêtre de partage d'écran dans votre logiciel de visio-conférence.

Pour conclure

L'article est un peu long et un peu technique pour qui ne maîtrise pas l'outil informatique. Nous venons pourtant de faire quelque chose d'assez incroyable. Nous créons une production vidéo grâce à un smartphone connecté en wifi qui se comporte comme une webcam usb ! Utilisez un stabilisateur et vous pourrez utiliser votre smartphone comme caméra sur toute la portée wifi. Amusez-vous bien !