web-dev-qa-db-fra.com

Quatre entrées / dev / vidéo mais une seule caméra

J'ai un Dell XPS 9370, qui est connu pour n'avoir qu'un seul appareil photo. Mais ls /dev/video* résulte en /dev/video0 /dev/video1 /dev/video2 /dev/video3, donc quatre appareils photo différents.
Ces quatre caméras bouillonnent jusqu'aux applications, par ex. Skype qui répertorie quatre caméras, mais juste la première (/dev/video0) travaux.

Quelqu'un sait-il d'où viennent les autres entrées? Ou comment les cacher des couches supérieures?

6

La réponse donnée ici https://unix.stackexchange.com/questions/512759/multiple-dev-video-for-one-physical-device est une bonne réponse. J'ai le même problème avec Skype et cela a commencé lorsque j'ai mis à niveau le noyau de 4.4.x vers 5.1.x donc quelque part là-dedans, le module uvcvideo a produit une sortie différente. Cependant, a-t-on souligné la sortie de

v4l2-ctl --device=/dev/video* --all

montre que chaque entrée a une capacité différente, et dans le cas de ma caméra USB logitech, seulement 1 a une capture vidéo. Il s'agit donc très probablement d'un bogue dans Skype, qui est apparu après que le noyau a probablement corrigé un bogue lui-même, qui n'affiche pas seulement les entrées qui ont une capacité de "capture vidéo".

3
sabby

Chaque caméra possède un deuxième périphérique de métadonnées ajouté pour la sortie informations d'horodatage ou métadonnées détaillées par image

Vous pouvez utiliser v4l2-ctl pour obtenir plus d'informations sur un appareil et peut utiliser v4l2-ctl --list-formats --device /dev/videoX pour déterminer s'il contient des flux vidéo.

Pour répertorier uniquement les appareils avec des données vidéo, utilisez:

for dev in `find /dev -iname 'video*' -printf "%f\n"`
do
  v4l2-ctl --list-formats --device /dev/$dev | \
    grep -qE '\[[0-9]\]' && \
    echo $dev `cat /sys/class/video4linux/$dev/name`
done

Cela peut être combiné avec fzf pour sélectionner une caméra et lancer un programme:

for dev in `find /dev -iname 'video*' -printf "%f\n"`;do; v4l2-ctl --list-formats --device /dev/$dev | grep -qE '\[[0-9]\]' && echo $dev `cat /sys/class/video4linux/$dev/name`;done | fzf | awk '{ printf("/dev/%s", $1) }' | xargs guvcview --device
2
James EJ

Pour savoir ce qu'est chaque appareil, vous pouvez exécuter ceci (et changer le nombre dans video0 en video1, etc.):

cat /sys/class/video4linux/video0/name

La recherche Google Dell XPS 9370 indique que ce modèle possède également une caméra infrarouge en plus de la caméra Web normale, et la caméra infrarouge peut être utilisée pour l'authentification avec reconnaissance faciale. https://wiki.archlinux.org/index.php/Dell_XPS_13_ (9370)

Si vous souhaitez désactiver par exemple la caméra IR, plus d'informations sur votre système sont nécessaires, par exemple dmesg.

2
Karl R.