因此,我所需要的很简单-当前可用的视频捕获设备(网络摄像机)列表.我需要在简单的C或C ++控制台应用程序中使用它.通过列表,我的意思是类似这样的控制台输出:
1) Asus Web Camera
2) Sony Web Camera
因此,这似乎很简单,但我有一个要求-尽可能使用本机OS API-无需外部库-毕竟-我们想要的只是print出一个列表-不要飞上月球!)>
该怎么做?
也来自该系列:
- How to get a list of video capture devices on linux?andspecial details on getting cameras NAMESwith correct, tested answers
- How to get a list of video capture devices on Mac OS?with correct, not yet tested by my answers
- How to get a list of video capture devices on windows?with correct, tested answers
- How to get a list video capture devices NAMES using Qt (crossplatform)?
最新回答
- 2021-1-121 #
- 2021-1-122 #
您可以使用以下bash命令:
v4l2-ctl --list-devices
要使用上述命令,您必须安装软件包 v4l-utils 之前.在Ubuntu / Debian中,您可以使用以下命令:
sudo apt-get install v4l-utils
- 2021-1-123 #
通过给定类遍历sysfs设备很容易.下面的命令行之一可以执行此操作:
for I in /sys/class/video4linux/*; do cat $I/name; done
您只需打开
/sys/class/video4linux
,即可在C / C ++应用程序中执行相同的操作 目录,它将作为video4linux设备链接到所有网络摄像机:$ ls -al /sys/class/video4linux drwxr-xr-x 2 root root 0 Ноя 27 12:19 ./ drwxr-xr-x 34 root root 0 Ноя 26 00:08 ../ lrwxrwxrwx 1 root root 0 Ноя 27 12:19 video0 -> ../../devices/pci0000:00/0000:00:13.2/usb2/2-5/2-5:1.0/video4linux/video0/
您可以跟随每个符号链接到达每个设备的目录,并阅读
name
的全部内容 - 2021-1-124 #
V4L2文档说,每种类型可以有64个允许的设备.例如,对于/ dev / video路径,可以有64个设备的地址分别为/ dev / video0,/ dev / video1,/ dev / video2 ...
遍历64个设备,直到ioctl检索到指定树尾的ENIVAL。
相关问题
- c:x86_64 va_list结构的格式是什么?clinuxx8664variadicfunctionsabi2021-01-12 01:24
- 螺旋规则和"声明遵循用法"用于解析C和C ++声明c++cdeclaration2021-01-11 23:57
- c++:什么是glibc free / malloc / realloc无效的下一个大小/无效的指针错误以及如何解决?c++cmemoryglibc2021-01-11 22:57
- 当空指针不全为零时如何正确编写C / C ++代码c++ccomputerarchitecture2021-01-11 22:55
- 将类型转换为int时,是否始终保证C / C ++ bool类型为0或1?c++cboolean2021-01-11 21:24
这是我编写的代码段.大概是一本书.我想您可以遍历所有/ dev / videoN节点并获取信息。