DroidCam : c’est cool, mais ça pourrait être bien mieux

closeCet article a été publié il y a 3 ans 10 mois 14 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Avec le confinement, il se trouve que je n’ai pas pu voir ma sœur depuis le nouvel an. Idem pour ma mère, qui de son côté s’est flingué le dos. Pour organiser une visioconférence de « consolation », j’ai redécouvert à quel point les webcam integrées dans les laptop sont affreuses. Et si on tentait le smartphone en guise de remplaçant ?

Il n’y a qu’à voir les rageux fans d’Apple gueuler sur la qualité médiocre (c’est même pire que ça : c’est moins bon qu’avant) de la cam intégrée aux derniers macbook pro qui coutent deux smic pour comprendre le problème : même chez Apple qui fait rarement dans le compromis, un composant pourtant peu onéreux par rapport au reste de la machine se retrouve être juste honteux. Apple, qui vante les qualités de son application Facetime, qui utilise une source vidéo affreuse, ça fait tâche dans le tableau.

Mais il ne faut pas croire que le problème est spécifique à la marque à la pomme, sans vouloir aller jusqu’à des webcam 4k60fps intégrées (on a pas souvent les réseaux pour envoyer une telle image, sans parler de la décoder à l’autre bout de la « ligne »), la différence flagrante de la qualité des webcams comparées aux évolutions constantes année après année des capteurs de smartphone me rend perplexe, à croire qu’on ne peut pas capitaliser sur ces évolutions. Je suis de près l’apparition des modèles de laptop qui sortent avec une plateforme Ryzen 4000 (partie CPU de Ryzen 3000 et GPU Vega en 7nm), et le constat est le même à chaque fois : quelque soit la cible de l’appareil, la webcam est au maximum en 720p 30fps, ce qui est désormais limite en 2020. Je demande pas la lune, mais avoir au moins du fullHD avec en bonus, sur les hauts de gamme, du 60FPS, me parait loin d’être impossible ni trop cher en 2020, non ?

Arrive quand même l’horreur : la webcam du PC de ma mère. Un modèle 17″ Asus à base de Core i3 4000m d’il y a donc six ans, fourni avec Windows 8.1, dont la webcam est sobrement intitulée « USB Camera ». Le mieux que j’ai pu apprendre est qu’elle est fabriquée par Realtek, mais je n’ai rien trouvé d’autre comme référence ni pilote, car c’est celui de Microsoft qui est utilisé, et qui date de… 2006. Vous la sentez la merde ?

Voilà, et encore, c’est une image fixe, en 640×480 donc, la résolution que j’utilisais pour mon écran en 2002. Et je vous épargne la photo le soir avec 4 fois moins de lumière. Dans la pratique en vidéo si on arrive à obtenir 10 images par seconde c’est tout le bout du monde. Alors imaginez quand un Skype vous étire ça sur l’intégralité de votre écran 16 pouces (celui de ma sœur), ça donne quelque chose de tellement immonde que je renonce à vous l’afficher, pour préserver votre santé mentale et visuelle.

Le smartphone en remplacement ?

J’avais déjà eu cette idée dans le passé, sans avoir été au bout de la démarche en cherchant et en testant, mais avec l’idée de la comparaison naturelle entre la qualité d’image des smartphones même d’entrée de gamme (en gros, pour le prix d’une Logitech StreamCam, on a un smartphone 4G complet avec un écran de 6″…),  cette expérimentation a naturellement refait surface. Entre le débit d’image, la résolution, la gestion de la lumière bien plus optimale, les possibilités éventuelles sur le zoom et j’en passe, bref, c’est une aventure qui se tente.

J’ai donc eu l’occasion de faire le test sur deux ordiphones différents : mon Huawei P20 Lite dont il est prévu que je vous donne des nouvelles pour ses deux ans, et le Huawei Y5 version 2019. Mais tout smartphone Android un peu récent fera l’affaire, pour peu qu’il ait un peu de patate quand même, parce qu’on a vu la différence entre les deux déjà, on va le voir.

DroidCam, l’application de référence

Malgré son nom, DroidCam est techniquement disponible sur Android et iOS, et les applications PC Windows ET Linux sont également de la partie. Oui oui, aussi pour Linux, mais j’ai eu l’occasion de faire le test d’abord sur Windows, comme ça pas de jaloux.

Pour rappel, l’application fonctionne en deux parties : la partie installée sur mobile capture l’image du téléphone et crée un « serveur vidéo », qu’on peut ensuite soit consulter directement dans un navigateur (on a que l’image), soit contacter via l’appli client sur PC qui va créer une webcam virtuelle pour y transmettre le flux récupéré sur le téléphone. On peut aussi capturer le son du smartphone, mais pour avoir tenté de faire un comparatif, la qualité du micro ambiant du smartphone n’est pas forcément plus agréable que le micro intégré du laptop, et on est toujours à des années lumière des micro-casques donc… Deux modes de fonctionnement sont possibles, le premier simple via le wifi/réseau local, le deuxième via USB qui demande un peu plus de manipulations que je n’ai pas testé.

Premier constat : les devs sont bons, les applications aussi bien mobiles que PC sont simples et très fonctionnelles. Par contre, leur site web c’est de la merde en barre : aucun menu de navigation, ni de moteur de recherche, on doit sauter de page en page pour tenter de trouver nos informations (j’en ai surtout eu besoin pour la partie Linux, j’y reviendrai). On se croirait revenu sur un de mes premiers essais de site web en 1998 en cours d’informatique en seconde.

Deuxième constat : l’application mobile existe en deux versions, une « gratuite » et une payante. Je mets gratuite entre guillemets parce qu’on sait que désormais, l’affichage de publicité n’a rien d’innocent et désintéressé dans l’univers Google et du Web en général. Pire, et là c’est vraiment gonflé de leur part, la résolution du flux vidéo du smartphone est limitée, dans la version gratuite, à 640×480. On garde les autres avantages comme la gestion de la lumière et la fluidité relative à la puissance du smartphone, mais merde, on est plus en 2002. La version payante propose en plus une tétrachiée d’options supplémentaires qui permettent de contrôler plusieurs éléments du smartphone directement depuis l’appli, comme le zoom, l’autofocus, la balance des blancs, l’allumage du flash, etc, mais ils auraient au moins pu amener le 720p par défaut quoi !

Usage sous Windows, avec le laptop de ma mère

Comme je l’ai évoqué, l’application est simple, efficace, s’installe sans pourrir votre PC. On aimerait voir des freeware comme ça plus respectueux de nos machines en 2020 ! L’interface est simple, on lance, on saisit l’adresse IP du téléphone (et le port si on s’est amusé à le changer), et une seconde après on a l’image qui doit s’afficher, sauf si on a laissé le téléphone sur la table évidemment 😀 Mais il suffit dès lors de cadrer l’image qu’on souhaite partager. En fonction des téléphones et de l’usage final, on peut poser le « capteur » contre l’écran , ça masquera une petite partie de celui-ci mais si on n’a rien à manipuler en paralèlle, ça peut le faire.

Ensuite sous Skype, on sélectionne la webcam « DroidCam » et on constate le résultat :

On a la même résolution, mais on est à des années lumière en termes de qualité et de fluidité. Ma sœur me l’a fait remarquer quand on s’est amusé à faire un comparatif entre les deux 😀 En clair, solution validée, même pour ma maman quand elle se retrouvera autonome pour ça.

Usage sous Linux, laptop pro et perso (c’est pareil)

Pareil parce que les deux sont sous Manjaro, la seule différence c’est que sur le PC du boulot je suis resté en noyau 4.19, alors que sur mon perso c’est du noyau 5.4. Oui, que du LTS. Je vous expliquerai probablement pourquoi sur le laptop du boulot j’ai du revenir au 4.19 en 2020, c’est marrant aussi. Enfin dans les deux cas, j’ai pu faire fonctionner le système sans trop de problèmes, mais évidemment, ça n’a pas été aussi fluide que sous Windows. L’installation aucun souci, via AUR c’est d’une simplicité absolue. Mais la suite…

D’abord, le module noyau v4l2loopback-dc qui permet de créer la webcam virtuelle n’est pas chargé par défaut, il faut manuellement « modprober » ce qui se fait en mode administrateur. On a vu plus souple, le point positif c’est que le module est fourni via DKMS il est donc mis à jour proprement en cas d’update noyau. Et c’est là en fait que j’ai découvert la limitation de la résolution, le module crée par défaut une webcam en 640×480, même si le flux est en résolution supérieure. Il faut aller modifier, toujours en mode administrateur, le fichier de configuration du module pour changer les paramètres (pensez à créer le fichier chez vous s’il n’existe pas déjà) :

Ensuite décharger le module (modprobe -r), et le recharger, parce qu’évidemment les paramètres ne sont pas pris à chaud. Et attention, si on met une sortie qui n’est pas dans le même format que la source, l’image est déformée. Dans mon cas j’ai quand même poussé jusqu’à 720p, ça étire un peu le flux d’origine mais comme je garde le ratio, c’est moins dégueulasse. On constate quand même une légère augmentation du bruit visible en faible luminosité.

Ensuite, la gestion du son est encore à part et vu les manipulations de la documentation j’ai abandonné direct. On parle de module Alsa, qui reste semble-t-il toujours aux commandes alors qu’on manipule pulseaudio au quotidien, donc j’ai du mal à comprendre comment ça fonctionne. 2020, et la gestion du son sous Linux a encore 20 ans de retard sur Windows, et on se demande pourquoi Linux ne s’impose toujours pas…

Enfin, une fois la partie « bas niveau » en place, on peut lancer l’application qui a exactement la même tête que sous Windows, donc adresse IP à saisir, et ensuite, on sélectionne la caméra dans Skype/Teams. La bonne surprise cependant, c’est que là où dans l’application Windows on me dit que les contrôles sont réservés à la version DroidCamX (donc payante), sous Linux je peux contrôler le zoom, l’autofocus et le flash  😀 Sur le laptop boulot on a donc une webcam avec la même résolution, mais l’ouverture est plus large, l’image plus fine et lumineuse et la fluidité un peu meilleure. Sur le laptop perso, la webcam fait déjà du 720p avec une gestion relativement propre de la lumière, la fluidité n’est pas parfaite mais ça peut suffire pour des petites visio-conférences. Y’a quand même du bruit donc faut pas être exigeant sur la qualité de l’image.

L’alternative qui n’a pas fonctionné pour moi

J’ai cherché à voir si une option permettant une meilleure qualité sans devoir balancer sa carte bancaire à Google existait. Il semblerait, elle s’appelle Iriun Webcam, dont le fonctionnement est siimilaire à savoir appli mobile+appli desktop. Il permet d’exploiter la 4K si le téléphone le permet, mais de mon côté, j’ai rencontré beaucoup de problèmes. Déjà, l’installation avec le paquet AUR déconne parce que le md5 de l’archive téléchargée par le script d’installation n’est pas le même. Les développeurs n’ont pas spécialement envie de penser qu’on est sur PC et qu’on a besoin de contrôles de versions, donc j’ai tenté l’installation à la main (on clone le dépot AUR, on modifie le PKGBUILD, et makepkg -si dans la foulée). Mais une fois v4l2loobpack manuellement chargé au niveau du noyau (module officiel pour faire une webcam virtuelle) et le logiciel lancé, ben écran noir sur la capture, pourtant le smartphone indique bien que la connexion est établie. Aussi, le flux semble coupé très très régulièrement, du coup, au bout d’un quart d’heure de manipulations sans résultat, j’ai lâché l’affaire.

Je ne l’ai pas testé non plus sous Windows, si vous avez expérimenté avec hésitez pas à partager, à ce moment de l’histoire j’ai décidé que j’avais autre chose à faire que de débugger des applis qui ne me donnent déjà pas beaucoup d’infos sur leur fonctionnement.

Ça manque cruellement d’open-source

Car oui, tous les éléments testés ici ne sont pas open-source. Et c’est un vrai problème des deux côtés, aussi bien au niveau du smartphone où l’on dépend du store fermé de Google ou d’Apple, que du côté du PC où l’on ne peut pas forcément s’assurer que l’application n’en fait pas un peu trop, pour un logiciel qui a accès à la webcam. Sur Linux, comme ça dépend d’un module noyau (modifié dans le cas de DroidCam), c’est un peu tendu pour s’assurer du suivi du bon support lors des montées de version (même si globalement l’infrastructure v4l2 est assez stable).

Il y a bien eu une application appelée SmartCam, dont les fichiers sont toujours disponibles, mais elle n’a pas été mise à jour depuis 2013 voire plus vieux encore pour certains, et autant dire que ça commence à faire vraiment trop dans le monde de l’informatique.

En attendant, et vu la qualité du résultat même avec une résolution décevante avec la version gratuite, vous avez une solution de rechange pour les webcam intégrées aux laptop, ou pour votre PC de bureau. Y’a juste un truc que j’ai pas vraiment abordé : le fait qu’il faut poser le téléphone dans une position pas trop désavantageuse pour votre visage 😀

PS : c’est évident pour certains, mais je rappelle que si vous êtes moche comme moi à la base, une bonne webcam ou un bon smartphone n’y changera rien. On verra juste mieux à quel point vous êtes moche 😀