我在这台内置网络摄像头的笔记本电脑上同时启动了 ubuntu 和 windows。网络摄像头在 windows 上运行良好,但在 ubuntu 上却不行,我不知道如何修复它。我查看了其他与我的问题类似的问题,但它们没有给出可行的解决方案。以下是我见过的几个人尝试的一些测试,以及我将它们放入终端后得到的结果
cd /dev/video0
bash: cd: /dev/video0: Not a directory
lsusb
Bus 002 Device 002: ID 045e:0306 Microsoft Corp. USB3.0 Card Reader
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 045e:09c0 Microsoft Corp. Surface Type Cover
Bus 001 Device 003: ID 1286:204c Marvell Semiconductor, Inc. Bluetooth and Wireless LAN Composite
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Driver Info:
Driver name : ipu3-imgu
Card type : ipu3-imgu
Bus info : PCI:0000:00:05.0
Driver version : 5.18.10
Capabilities : 0xa4202000
Video Output Multiplanar
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x24202000
Video Output Multiplanar
Streaming
Extended Pix Format
Media Driver Info:
Driver name : ipu3-imgu
Model : ipu3-imgu
Serial :
Bus info : PCI:0000:00:05.0
Media version : 5.18.10
Hardware revision: 0x80862015 (2156273685)
Driver version : 5.18.10
Interface Info:
ID : 0x03000009
Type : V4L Video
Entity Info:
ID : 0x00000007 (7)
Name : ipu3-imgu 0 input
Function : V4L2 I/O
Pad 0x01000008 : 0: Source
Link 0x0200000b: to remote pad 0x1000002 of entity 'ipu3-imgu 0' (Video Statistics): Data
Priority: 2
Video output: 0 (ipu3-imgu 0 input)
Format Video Output Multiplanar:
Width/Height : 1920/1080
Pixel Format : 'ip3G' (10-bit bayer GRBG IPU3 Packed)
Field : None
Number of planes : 1
Flags :
Colorspace : Raw
Transfer Function : Default
YCbCr/HSV Encoding: Default
Quantization : Default
Plane 0 :
Bytes per Line : 2496
Size Image : 2695680
它确实检测到了某些东西,但似乎没有一个程序能够真正使用它。到目前为止,我已经测试了 Firefox、Discord、Cheese 和 guvcview。Discord 和 Firefox 无法检测到摄像头,否则运行正常。在 cheese 上,屏幕是黑色的,显示“播放网络摄像头的视频时出错”。当我去更改首选项中的设备时,我看到“ipu3-imgu”8 次。它们都不起作用。当我打开 guvcview 时,会立即打开一个小错误窗口,提示“未找到视频设备。您似乎安装了视频设备。您想试试吗?”当我转到下拉菜单选择一个设备时,我看到“ipu3-imgu”10 次,看到“Intel IPU3 CIO2”4 次。
目前使用的是 Ubuntu 22.04LTS,但据我所知,这种情况可能已经持续了一段时间
编辑:更多测试:
sudo cheese
[sudo] password for user:
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:57.992: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:57.992: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:57.992: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:57.992: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:58.050: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:58.052: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:58.054: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): GLib-GObject-CRITICAL **: 11:37:58.080: g_value_dup_string: assertion 'G_VALUE_HOLDS_STRING (value)' failed
(cheese:11404): cheese-WARNING **: 11:37:58.085: Device '/dev/video2' has no supported format: ../sys/v4l2/gstv4l2object.c(4038): gst_v4l2_object_set_format_full (): /GstCameraBin:camerabin/GstWrapperCameraBinSrc:camera_source/GstBin:bin18/GstV4l2Src:v4l2src1:
Call to S_FMT failed for NV12 @ 4224x3136: Invalid argument
Cheese 仍然无法使用 sudo 权限运行。将打开并运行
ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 Jul 13 22:57 /dev/video0
crw-rw----+ 1 root video 81, 1 Jul 13 22:57 /dev/video1
crw-rw----+ 1 root video 81, 12 Jul 13 22:57 /dev/video10
crw-rw----+ 1 root video 81, 13 Jul 13 22:57 /dev/video11
crw-rw----+ 1 root video 81, 14 Jul 13 22:57 /dev/video12
crw-rw----+ 1 root video 81, 15 Jul 13 22:57 /dev/video13
crw-rw----+ 1 root video 81, 2 Jul 13 22:57 /dev/video2
crw-rw----+ 1 root video 81, 3 Jul 13 22:57 /dev/video3
crw-rw----+ 1 root video 81, 4 Jul 13 22:57 /dev/video4
crw-rw----+ 1 root video 81, 5 Jul 13 22:57 /dev/video5
crw-rw----+ 1 root video 81, 6 Jul 13 22:57 /dev/video6
crw-rw----+ 1 root video 81, 7 Jul 13 22:57 /dev/video7
crw-rw----+ 1 root video 81, 8 Jul 13 22:57 /dev/video8
crw-rw----+ 1 root video 81, 9 Jul 13 22:57 /dev/video9
答案1
许多设备访问问题可以通过组成员身份变更来解决。
具体来说,如果ls -l
显示组权限(第二个“ rwx
”三元组)为“ rw
”(例如“ -rw-rw----
”),那么将自己添加到拥有该设备的组将授予rw
访问权限。
就是这样:
# change to your device name
device="/dev/video0"
sudo adduser $USER $(stat -c "%G" $device)
rw
这允许您成为可以使用该设备的群组的成员,但还有一步。
要使所有进程成为新组的成员,请注销并登录。组成员资格是按时设置的login
。
要在新组中创建单个进程(用于测试,在注销/登录之前):
newgrp $(stat -c "%G" $device)
或者,只需键入组名。请参阅man newgrp
。