首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一个物理设备的多个/dev/视频

一个物理设备的多个/dev/视频
EN

Unix & Linux用户
提问于 2019-04-16 12:25:37
回答 2查看 19.3K关注 0票数 32

首先,一些规范:我的电脑是惠普EliteBook 8460 p。它配备了一个集成的芝加哥惠普高清摄像头。

我的问题是,很多应用程序(至少Skype和guvcview)都在为同一个摄像头显示多条线;实际上,如果我使用ls -l /dev | grep video,我会得到以下内容:

代码语言:javascript
运行
复制
crw-rw----  1 root video      29,   0 Apr 16 08:13 fb0
crw-rw----  1 root video     243,   0 Apr 16 08:13 media0
crw-rw----+ 1 root video      81,   0 Apr 16 08:13 video0
crw-rw----+ 1 root video      81,   1 Apr 16 08:13 video1

我有两个/dev/video[n],只有一个(集成的)网络摄像头;Skype将正常工作与/dev/video0,但不与/dev/video1。guvcview也是一样的。

如果我插入另一个USB摄像头,例如罗技摄像头,我可以在dmesg中获得以下信息:

代码语言:javascript
运行
复制
[21222.638802] usb 2-2: new high-speed USB device number 20 using xhci_hcd
[21222.970684] usb 2-2: New USB device found, idVendor=046d, idProduct=08c2, bcdDevice= 0.05
[21222.970755] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[21222.972518] uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c2)
[21226.044535] uvcvideo 2-2:1.0: Entity type for entity Extension 4 was not initialized!
[21226.044538] uvcvideo 2-2:1.0: Entity type for entity Extension 8 was not initialized!
[21226.044540] uvcvideo 2-2:1.0: Entity type for entity Extension 10 was not initialized!
[21226.044541] uvcvideo 2-2:1.0: Entity type for entity Extension 9 was not initialized!
[21226.044543] uvcvideo 2-2:1.0: Entity type for entity Extension 3 was not initialized!
[21226.044545] uvcvideo 2-2:1.0: Entity type for entity Processing 2 was not initialized!
[21226.044547] uvcvideo 2-2:1.0: Entity type for entity Camera 1 was not initialized!
[21226.044746] input: UVC Camera (046d:08c2) as /devices/pci0000:00/0000:00:1c.7/0000:25:00.0/usb2/2-2/2-2:1.0/input/input35
[21226.137559] usb 2-2: Warning! Unlikely big volume range (=3072), cval->res is probably wrong.
[21226.137569] usb 2-2: [5] FU [Mic Capture Volume] ch = 1, val = 4608/7680/1

下面使用ls -l /dev/ | grep video

代码语言:javascript
运行
复制
crw-rw----  1 root video      29,   0 Apr 16 08:13 fb0
crw-rw----  1 root video     243,   0 Apr 16 08:13 media0
crw-rw----  1 root video     243,   1 Apr 16 14:06 media1
crw-rw----+ 1 root video      81,   0 Apr 16 08:13 video0
crw-rw----+ 1 root video      81,   1 Apr 16 08:13 video1
crw-rw----+ 1 root video      81,   2 Apr 16 14:06 video2
crw-rw----+ 1 root video      81,   3 Apr 16 14:06 video3

3个新条目:/dev/media1/dev/video2/dev/video3

我甚至找到了一个索尼网络摄像头(CEVCECM),总共有4台新设备。dmesg日志:

代码语言:javascript
运行
复制
[21927.665747] usb 2-2: new high-speed USB device number 23 using xhci_hcd
[21927.817330] usb 2-2: New USB device found, idVendor=05e3, idProduct=0608, bcdDevice= 9.01
[21927.817339] usb 2-2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[21927.817343] usb 2-2: Product: USB2.0 Hub
[21927.824119] hub 2-2:1.0: USB hub found
[21927.824814] hub 2-2:1.0: 4 ports detected
[21928.113733] usb 2-2.4: new high-speed USB device number 24 using xhci_hcd
[21928.223184] usb 2-2.4: New USB device found, idVendor=054c, idProduct=097b, bcdDevice=21.12
[21928.223192] usb 2-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[21928.223197] usb 2-2.4: Product: CEVCECM
[21928.223201] usb 2-2.4: Manufacturer: Sony
[21928.223206] usb 2-2.4: SerialNumber: DHZD10412EUHK1
[21928.227506] uvcvideo: Found UVC 1.00 device CEVCECM (054c:097b)
[21928.242592] uvcvideo: Unable to create debugfs 2-24 directory.
[21928.242780] uvcvideo 2-2.4:1.0: Entity type for entity Extension 7 was not initialized!
[21928.242783] uvcvideo 2-2.4:1.0: Entity type for entity Extension 3 was not initialized!
[21928.242785] uvcvideo 2-2.4:1.0: Entity type for entity Processing 2 was not initialized!
[21928.242787] uvcvideo 2-2.4:1.0: Entity type for entity Camera 1 was not initialized!
[21928.242877] input: CEVCECM: CEVCECM as /devices/pci0000:00/0000:00:1c.7/0000:25:00.0/usb2/2-2/2-2.4/2-2.4:1.0/input/input38

以及使用ls -l /dev | grep video生成的设备文件:

代码语言:javascript
运行
复制
crw-rw----  1 root video      29,   0 Apr 16 08:13 fb0
crw-rw----  1 root video     243,   0 Apr 16 08:13 media0
crw-rw----  1 root video     243,   1 Apr 16 14:18 media1
crw-rw----+ 1 root video      81,   0 Apr 16 08:13 video0
crw-rw----+ 1 root video      81,   1 Apr 16 08:13 video1
crw-rw----+ 1 root video      81,   2 Apr 16 14:18 video2
crw-rw----+ 1 root video      81,   3 Apr 16 14:18 video3
crw-rw----+ 1 root video      81,   4 Apr 16 14:18 video4
crw-rw----+ 1 root video      81,   5 Apr 16 14:18 video5

5个新条目:/dev/media1/dev/video2/dev/video5

我觉得应该使用的文件是/dev/media[n]文件,但Skype和guvcview却以某种方式失败了,回到了/dev/video[n]

例如,我对Webcamoid没有这个问题。

如果有人有主意的话,我就接受。同时我会继续调查..。

--编辑了2019年-05-14--

使用v4l2-ctl --device=/dev/video* --all获得了一些有趣的信息。对于Chicony HP HD网络摄像头,它的2个设备文件具有不同的设备功能:

代码语言:javascript
运行
复制
# Devices capabilities for /dev/video0
Video Capture
Streaming
Extended Pix Format

# Devices capabilities for /dev/video1
Metadata Capture
Streaming
Extended Pix Format

我得到了类似的结果USB网络摄像头。因此,也许Skype和guvcview没有做到的就是只列出支持Video Capture设备功能的视频设备。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-09-08 03:39:48

第二设备提供关于来自第一设备的视频数据的元数据。新的设备是由这个补丁引入的:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=088ead25524583e2200aa99111bea2f66a86545a

有关V4L元数据接口的更多信息可以在这里找到:

https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/dev-meta.html

对于运行的磨坊USB视频类设备,这主要是提供更准确的时间戳信息。对于像英特尔的RealSense线,提供更广泛的关于如何捕获图像的数据。这样的相机。

据推测,这些数据被分割成一个单独的设备节点,因为它不能以兼容的方式轻松地在主设备节点上传递。但是这有点痛苦,因为(a)不关心这个元数据的应用程序现在需要过滤掉额外的设备,(b)关心元数据的应用程序需要一种将这两个设备连接在一起的方法。

票数 26
EN

Unix & Linux用户

发布于 2020-04-22 17:53:42

非常烦人,但只是找到了一个解决方案:让udev为设备节点分配符号链接,只为“真实的”cams,而不是元数据。它们是相同的(?)致udev,即

udevadm info -n /dev/video0udevadm info -n /dev/video1“相同”,但它们得到的ATTR{index}不同。因此,对于我的两个摄像机,我得到了以下/etc/udev/rules.d/99-cam.rules

代码语言:javascript
运行
复制
SUBSYSTEM=="video4linux", ATTRS{idVendor}=="eb1a", ATTRS{idProduct}=="299f", ATTR{index}=="0", MODE="0664", GROUP="video", SYMLINK+="cams/cam1"

SUBSYSTEM=="video4linux", ATTRS{idVendor}=="1908", ATTRS{idProduct}=="2311", ATTR{index}=="0", MODE="0664", GROUP="video", SYMLINK+="cams/cam2"

之后,只需在应用程序中使用/dev/cams/camX而不是/dev/videoY

票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/512759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档