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?
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".
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
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.