Comment obtenir une liste des périphériques de capture vidéo (caméra web) sur linux ( ubuntu )? (C/C++)
Donc tout ce que je besoin est simple: une liste de actuellement disponible périphériques de capture vidéo (caméra web). J'en ai besoin en simple C ou C++ console application. Par liste, je veux dire quelque chose comme tels de la console de sortie:
1) Asus Web Camera
2) Sony Web Camera
De sorte qu'Il semble simple, mais j'ai une exigence pour l'utilisation de native api du système d'exploitation autant que possible - pas de libs externes - après tout, tout ce que nous voulons c'est que d'imprimer une liste - ne pas voler sur la lune!)
Comment faire une telle chose?
également à partir de cette série:
- Comment obtenir une liste des périphériques de capture vidéo sur linux? et obtenir plus de détails sur l'obtention de caméras de NOMS avec une bonne, testés réponses
- Comment obtenir une liste des périphériques de capture vidéo sur Mac OS? correcte, pas encore testé par mes réponses
- Comment obtenir une liste des périphériques de capture vidéo sur windows? avec une bonne, testés réponses
- Comment obtenir une liste des périphériques de capture vidéo NOMS à l'aide de Qt (compatible)?
- Pouvez-vous obtenir à partir de /proc/bus/input/devices
- La question est de savoir exactement comment le faire à partir du code?
Vous devez vous connecter pour publier un commentaire.
Ceci est un extrait de code que j'avais autour de la pose. Probablement à partir d'un livre. Je suppose que vous pourriez juste itérer sur tous les /dev/videoN nœuds et obtenir les informations.
Vous pouvez utiliser la commande bash suivante:
Afin d'utiliser la commande ci-dessus, vous devez installer le paquet v4l-utils avant. Dans Ubuntu/Debian, vous pouvez utiliser la commande:
v4l2-ctl
est fourni dans lev4l-utils
paquet.v4l2-ctl --list-devices
être la meilleure réponse pour mon problème particulier. J'ai fini de l'utiliser pour un simple python configurateur. Gist ici.Il est facile simplement en traversant sysfs appareils pour une classe donnée. La ligne de commande suivant l'une doublure en serait ainsi:
Vous pouvez faire la même chose en C/C++ de l'application, il suffit d'ouvrir
/sys/class/video4linux
répertoire, il aura des liens symboliques pour tous vos caméras web comme video4linux appareils:Vous pouvez suivre chaque lien symbolique vers un répertoire de chaque appareil et lire le contenu complet de
name
fichier dans ce répertoire pour obtenir le nom.V4L2 documentation indique qu'il peut comporter jusqu'à 64 périphériques autorisés pour chaque type. Par exemple pour le chemin /dev/vidéo, il peut comporter jusqu'à 64 appareils traités en tant que /dev/video0, /dev/video1, /dev/video2 ...
Itérer sur 64 appareils jusqu'à ce que l'ioctl retuens ENIVAL qui spécifie à la fin de l'arbre.