Outils pour utilisateurs

Outils du site


expert:retourner_image_webcam

Remettre l'image de sa webcam à l'endroit sur Ubuntu ou Debian

Certains fabricants d'ordinateurs portables ont l'idée saugrenue de monter les caméras embarquées dans l'encadrement de l'écran à l'envers. Cela se caractérise par une image inversée lorsque vous utilisez un programme de conversation vidéo comme Pidgin, Skype ou Google-talk.
Ce tutoriel fonctionne sur Ubuntu et dérivées ([K-X-L-ED]Ubuntu), probablement aussi sur Linux Mint et autres distributions très proches d'Ubuntu.
Avant de vous lancer, vérifiez bien que le programme que vous utilisez ne possède pas une option pour retourner l'image dans ses préférences, la solution la plus simple étant toujours la meilleure. Un exemple avec Kopete :


Un signe $ précède les commandes qui ne nécessitent pas de droits administrateur ; un signe # précède celles qui nécessitent des droits administrateur (ces signes ne font PAS partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente. Sur Ubuntu et dérivées ont utilise sudo pour obtenir les droits administrateurs.


Utiliser l'option "vflip"

Identifer le module en charge de la webcam

La première chose à faire est de déterminer quel module pilote votre webcamera, pour ça vous pouvez utiliser udevadm, couplé avec grep pour filtrer le résultat :

# udevadm info --query=all --name=/dev/video0 | grep DRIVER

E: ID_USB_DRIVER=stkwebcam

Ici le module en charge de la webcam est “stkwebcam”.

Nous utilisons le module “stkwebcam” à titre d'exemple, remplacez par le module qui est adapté à votre matériel

Vous pouvez également regarder quel module est chargé et utilisé par “videodev” avec lsmod :

$ lsmod | grep videodev

videodev      58084  1 stkwebcam

Le module supporte-t-il "vflip" ?

Certains pilotes acceptent une option vflip permettant de définir le sens vertical de l'image lors du chargement du module. Pour savoir si le module qui pilote votre camera le supporte on peut utiliser modinfo :

$ modinfo stkwebcam | grep vflip

parm:           vflip:Vertical image flip. Defaults to 1 (bool)

Dans le cas présent l'option est supportée, on peut la tester facilement en déchargeant le module, puis en le rechargeant en forçant une valeur différente de celle par défaut pour l'option “vflip” avec modprobe :

# modprobe -r stkwebcam

# modprobe stkwebcam vflip=1

Ensuite testez votre webcaméra avec un programme comme “cheese”, “pidgin”, “kopete” ou autre. Une fois la bonne valeur trouvée nous allons rendre permanent les changements.

Rendre le changement permanent

Deux façons sont possibles, au choix :

  • en éditant le fichier /etc/modules comme suit :
$ echo -e "stkwebcam vflip=1\n" | sudo tee -a /etc/modules
  • en éditant (ou en créant) un fichier /etc/modprobe.d/options.conf :
$ echo -e "options stkwebcam vflip=1\n" | sudo tee -a /etc/modprobe.d/options.conf

Maintenant à chaque redémarrage le module sera chargé avec l'option adaptée.

Le module n'a pas d'option "vflip"

Utiliser v4l2

Certains modules parmi les plus utilisés (gspca, uvcvideo) ne supportent pas l'option “vflip”, heureusement il reste un espoir (ouf !). Il est possible d'exporter une valeur pour l'orientation verticale de l'image à travers la librairie qui gère l’acquisition vidéo sous Linux v4l2.

Pour tester cette méthode ouvrez une console (terminal, ligne de commande) et tapez :

$ export LIBV4LCONTROL_FLAGS=3

Ensuite lancez un programme de test depuis la même fenêtre de console, simplement en tapant le nom du programme, un exemple avec guvcview :

$ guvcview

Pas trop dur ? Vous devriez voir immédiatement l'effet, et vous pouvez revenir à la valeur initiale en remplaçant le “3” par “1” dans la commande d'export.

Pour rendre le changement effectif à chaque lancement de d'une application vous pouvez modifier le lanceur dans votre menu application et remplacer la commande de lancement par la formule magique suivante :

sh -c 'export LIBV4LCONTROL_FLAGS=3 && guvcview'

Un exemple en image ci-dessous avec l'éditeur de menu de KDE :

Si vous voulez une solution indépendante du menu de lancement, créez un script et placez le là où vous voulez, par exemple /usr/local/bin. Le script pourra avoir le contenu suivant :

#! /bin/sh -

# Ce script est à utiliser comme lanceur de guvcview
# il corrige un problème d'image inversée avec une
# webcam compatible v4l2

export LIBV4LCONTROL_FLAGS=3  && /usr/bin/guvcview

exit 0

Imaginons que votre script se nomme “camera_flip.sh” et soit placé dans /usr/local/bin, vous le rendrez exécutable avec :

# chmod +x /usr/local/bin/camera_flip.sh

Ensuite il ne vous reste qu'à indiquer le chemin vers le script pour lancer votre programme, soit depuis une console ou en modifiant un lanceur existant.

Utiliser le dépôt PPA de libv4l

Ubuntu possède un dépôt de développement pour la librairie libv4l qui prend parfois en compte les “défauts” de certains matériels, comme les webcams montées à l'envers. Pour l'utiliser ajoutez le dépôt “PPA” comme suit :

# apt-add-repository ppa:libv4l/ppa

Si votre problème n'est pas corrigé par ces versions récentes de libv4l, vous devrez utiliser les solutions proposées plus haut. Ce dépôt est toutefois nécessaire pour ce qui suit.

Cas particuliers : Skype et Google chat Video

Ces logiciels non-libres posent des problèmes supplémentaires car ils n'utilisent pas nativement “v4l2”, pour bénéficier du retournement de l'image vous devrez installer le dépôt PPA de libv4l présenté plus haut, et modifier une variable d'environnement au lancement du programme (pour skype) ou agir sur le navigateur web utilisé pour les conversations video (Google chat). Là il y a deux cas selon que vous utilisiez un système en 32 bits (i386 ou x86), ou un système 64 bits (amd64 ou x86-64).

Pour Skype

  • Pour un système 32 bits le script de lancement aura le contenu suivant :
#! /bin/sh -

# Ce script est à utiliser comme lanceur de Skype
# il corrige un problème d'image inversée avec une
# webcam compatible libv4l.
# Nécessite le dépôt PPA libv4l
# apt-add-repository ppa:libv4l/ppa

export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
export LIBV4LCONTROL_FLAGS=3

exec `which skype`

exit 0
  • Pour un système 64 bits :
#! /bin/sh -

# Ce script est à utiliser comme lanceur de Skype
# il corrige un problème d'image inversée avec une
# webcam compatible libv4l

export LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype
export LIBV4LCONTROL_FLAGS=3

exec `which skype`

exit 0

Il vous reste à placer ce script où vous voulez, le rendre exécutable avec un coup de “chmod +x”, et modifier vos lanceurs en indiquant le chemin vers le script à la place du nom du programme comme commande de lancement.

Pour Google-Talk

Le plug-in Google-Talk qui permet d'effectuer des conversations audio et video à travers un navigateur Internet (et un compte gmail), ça peut être Firefox, Chromium, ou n'importe quel autre, nécessite de “retourner” l'image de la webcam au lancement du navigateur. En pratique il vous suffira de remplacer la commande de lancement du navigateur internet (ici firefox) par :

$ sh -c 'export LIBV4LCONTROL_FLAGS=3 && firefox'

Vous pouvez remplacer “firefox” par "chromium" (ou “chromium-browser” sur (K)Ubuntu), n'oubliez pas que Firefox se nomme "iceweasel" sur Debian.


Retour à la page Expert
Retour à la page Matériel
Retour à la page Ubuntu

expert/retourner_image_webcam.txt · Dernière modification: 2014/08/13 16:28 par idiotein30