web-dev-qa-db-fra.com

Comment réparer une vidéo webcam d'ordinateur portable inversé

J'utilise Ubuntu 16.04 sur un ordinateur portable ASUS N61JQ. Lorsque j'utilise un appel vidéo de Viber ou de Facebook (via chrome), ma webcam génère une image inversée. Je me demande comment résoudre ce problème. Parce que deux applications distinctes (Viber et Chrome) ont cela, je pense que ce n'est pas spécifique à l'application.

En cherchant un correctif sur Internet, j'ai trouvé de nombreux cas donnant des instructions sur la façon de résoudre ce problème pour Skype. j'ai couru

Sudo apt-add-repository ppa:libv4l/stable
Sudo apt-get update
Sudo apt-get upgrade

qui a installé libv4l-0 libv4lconvert0 et retesté mais aucun correctif.

Je n'ai pas suivi ces solutions (par exemple, ici ), car viber et chrome ne sont pas des applications 32 bits. J'ai vérifié que Viber est bien 64 bits avec la méthode fournie ici .

J'inclus les lignes des fichiers que je suppose que je devrais changer si je devais faire quelque chose de similaire au correctif de Skype:

$ cat /usr/share/applications/viber.desktop | grep Exec
Exec=/opt/viber/Viber

et

$ cat /usr/share/applications/google-chrome.desktop | grep Exec
Exec=/usr/bin/google-chrome-stable %U
Exec=/usr/bin/google-chrome-stable
Exec=/usr/bin/google-chrome-stable --incognito

Je ne suis pas sûr de savoir comment modifier ces lignes et où trouver le paquet libv4l pour 64 bits, afin d'implémenter une solution de contournement permettant de faire fonctionner viber et chrome correctement.

Dans ma quête pour résoudre le problème sous-jacent, j'ai commencé par rechercher des paramètres d'appareil photo/vidéo dans les paramètres système "Recherchez votre ordinateur" de Unity. Mais je n'ai rien trouvé. Je cours aussi:

$ ls /dev/video*
/dev/video1

mais je ne sais pas quoi faire de ce résultat. Aussi après avoir couru

Sudo lshw -sanitize

Je reçois, quelque part le long d'une énorme sortie:

*-usb:0
                  description: Video
                  product: USB2.0 UVC 2M WebCam
                  vendor: USB2.0 UVC 2M WebCam
                  physical id: 2
                  bus info: usb@1:1.2
                  version: 2.02
                  serial: [REMOVED]
                  capabilities: usb-2.00
                  configuration: driver=uvcvideo maxpower=500mA speed=480Mbit/s

J'ai essayé de trouver le pilote à partir de cela mais rien trouvé. Par exemple:

$ ll /lib/modules/4.4.0-28-generic/kernel/drivers | grep uvcvideo

ne renvoie rien. Je cours aussi:

$ lsmod | grep uvcvideo
uvcvideo               90112  0
videobuf2_vmalloc      16384  1 uvcvideo
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
videodev              176128  4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
media                  24576  2 uvcvideo,videodev

qui (selon Internet) indique le statut des pilotes. Je ne peux pas l'interpréter cependant.

Il devrait y avoir un fichier de pilote quelque part que je pourrais bricoler pour le réparer, mais comment puis-je le trouver?

4
Karsus

J'ai poursuivi mes recherches à ce sujet et j'ai proposé une solution temporaire. Les informations de this réponse ont également aidé.

La principale différence ici est que les applications sont en 64 bits, je ne pouvais donc pas pleinement suivre les solutions précédentes. Après avoir installé libv4l, je devais trouver un chemin approprié pour un fichier compat 64 bits afin de définir la variable LD_PRELOAD. Après avoir regardé autour de moi, j'ai découvert que je pouvais le faire avec:

 $ dpkg -L libv4l-0 | grep compat
 /usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so

Ceci et la réponse de Veazer m'ont aidé à compléter la solution de contournement en modifiant le fichier viber.desktop. Important, avant d'effectuer des modifications, effectuez une sauvegarde, par exemple:

Sudo cp /usr/share/applications/viber.desktop /usr/share/applications/viber.desktop-original

Après cela, nous avons toutes les informations nécessaires pour modifier le fichier viber.desktop. Nous n'avons besoin que de changer une ligne. Les modifications suivantes résolvent le problème dans viber:

$ cat /usr/share/applications/viber.desktop | grep Exec
Exec=sh -c 'export LIBV4LCONTROL_FLAGS=2 && LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /opt/viber/Viber'

Notez la valeur entière 2 pour l'inversion de la caméra.

Je m'attends à ce que la même approche corrige également chrome, mais je travaillerai plus tard. Sauf si quelqu'un peut m'aider à résoudre le problème sous-jacent des pilotes de la webcam.

2
Karsus

En ce qui concerne la résolution de la vidéo de webcam pour ordinateur portable inversé/inversé dans les navigateurs Chrome/Chromium - il y a quelques jours, j'ai mis à jour l'ordinateur portable ASUS P52F vers Linux Mint 18 XFCE, qui est comparable à Ubuntu 16.04.1. J'ai fait face à une vidéo WebRTC webcam "à l'envers" sur des hangouts et sur Facebook à l'aide de Chrome navigateur Web uniquement. Firefox fonctionne bien. Le fromage affiche également la vidéo correctement.

Après quelques recherches sur Google, j'ai trouvé ce rapport de bogue . Dans le commentaire 22, vous pouvez voir qu'il y a 2 ans, un 0001-Use-libv4l2-for-Linux-V4L-grabber.patch a proposé de corriger le comportement de Chrome/Chromium. Depuis plus d'un an, libv4l2 est ajouté à Chromium, mais n'est pas activé pour Linux. Vous pouvez voir toute la discussion dans le fil du rapport de bogue. En bref, il semble qu'ils ne travaillent pas activement à résoudre ce problème depuis près d'un an maintenant. Cependant, il existe une solution de contournement laide ...

Vous pouvez ajouter une extension Flip this à Chrome. Il vous permet de retourner la vidéo de votre webcam ou tout autre élément d’une page Web. Il ne sera inversé que localement, de sorte que les personnes à qui vous parler via Chrome doivent également utiliser le même truc. Ce n'est pas joli, mais ça marche ... bon, en quelque sorte; ) Après tout, le passage à Firefox est peut-être une solution meilleure et plus confortable. À votre santé!

3
Dawid M.

Cela a fonctionné pour moi sur:

  • Ubuntu Desktop,
  • Ubuntu 18.04 LTS,
  • ASUS F3Eseries

Problème:

  • Caméra vidéo Skype à l'envers
  • Skype version 8.48

Résoudre:

Sudo nano  /usr/bin/skypeforlinux

Mettez à jour la dernière ligne.

#!/bin/sh

SCRIPT=$(readlink -f "$0")
USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)

SKYPE_PATH="/usr/share/skypeforlinux/skypeforlinux"
SKYPE_LOGS="$HOME/.config/skypeforlinux/logs"

mkdir -p $SKYPE_LOGS

echo "$SKYPE_PATH"

# was this
#Nohup "$SKYPE_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$SKYPE_LOGS/skype-startup.log" 2>&1 &

# changed to
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /usr/share/skypeforlinux/skypeforlinux  > "$SKYPE_LOGS/skype-startup.log" 2>&1 &
1
dm3942

J'utilise Debian et voici la solution que j'ai appliquée et qui fonctionne bien:

  1. Assurez-vous que le paquet libv4l-0 est installé, (source: v4l-utils)
  2. Localisez le fichier: /usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so
    ou /usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so
  3. Ouvrez votre terminal et entrez ce qui suit:

    LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so  /usr/bin/skypeforlinux
    

Il va commencer votre Skype, vous vous connectez comme d'habitude, et une fois ouvert, votre cam devrait être corrigé.

Bonne chance!!

1
viktorkh

Comme la version 8 et les versions ultérieures de Skype sont essentiellement des applications Web, le vieux truc avec la bibliothèque libv4l ne fonctionnera plus. J'ai perdu beaucoup d'heures pour découvrir que ce n'est plus possible.

Donc, comme la solution logicielle n’existe pas, j’ai opté pour une solution matérielle. J'ai acheté ne webcam externe ... et cela fonctionne parfaitement.
En outre: j’ai enfin compris que la caméra intégrée aux ordinateurs portables Asus de la série K était d’une qualité exceptionnellement basse. Mon externe est tellement meilleur. Enfin, après plusieurs années, mes interlocuteurs peuvent me voir clairement, et plus important encore: correctement :-)

1
G. Demecki

Installez le package v4l-utils qui contient l'utilitaire v4l2-ctl:

Sudo apt-get install v4l-utils

Puis éditez votre .profile:

nano ~/.profile

Et ajoutez à la fin:

# Flip webcam video
v4l2-ctl -c vertical_flip=0
v4l2-ctl -c vertical_flip=1

(la double commande est intentionnelle)

1
José

1) Installer les utilitaires:

$ Sudo apt-get update
$ Sudo apt-get install v4l-utils
$ Sudo apt-get install v4l2loopback-utils

2) Télécharger v4l2loopback

3) Décompressez le dossier 'v4l2loopback-master'

4) Compiler le module v4l2loopback:

$ make

5) Installer:

$ Sudo make install

6) Activer le périphérique:

$ Sudo modprobe v4l2loopback exclusive_caps=1

7) Vérifiez si l'appareil est activé:

$ v4l2-ctl --list-devices

Dummy video device (0x0000) (platform:v4l2loopback-000):
  /dev/video1

USB2.0 UVC 2M WebCam: USB2.0 UV (usb-0000:00:1a.0-1.2):
  /dev/video0

8) Copiez le flux vidéo de la webcam via ffmpeg:

$ ffmpeg -f v4l2 -i /dev/video0 -vf "vflip" -f v4l2 /dev/video1

9) Ouvrez votre application vidéo préférée (skype, hangouts, zoom, ...) et sélectionnez "Périphérique vidéo factice".

Vous pouvez voir pour plus de détails sur les paramètres:

https://ffmpeg.org

https://www.ostechnix.com/20-ffmpeg-commands-beginners/

https://github.com/qTox/qTox/wiki/Video