我在 PC 上使用 Logitech C720 网络摄像头,该 PC 运行 Devuan Beowulf GNU/Linux(~= Debian 10 Buster,但没有 systemd)。
在相关但非 Linux 特定的内容中,关于超级用户的问题,事实证明我需要更改网络摄像头的电源线频率设置。
但是 - 我不知道该怎么做。我的桌面环境 Cinnamon 在“系统设置”对话框中没有相应的项目。那我该如何进行这个设置呢?
答案1
在命令行上,您可以使用以下命令将uvcvideo
驱动器的电源线频率设置为 50 Hz 值:
v4l2-ctl --set-ctrl=power_line_frequency=1
如果您的网络摄像头不是/dev/video0
,请添加-d /dev/videoN
具有正确编号的选项。该v4l2-ctl
命令位于 package 中v4l-utils
,至少在 Debian 和相关发行版上是这样。
此外,v4l2-ctl -L
还将显示网络摄像头中可用的设置列表。它还将描述电源线频率等设置的可用选项。您的网络摄像头的可用设置列表可能与我的不同。
为了使电源线频率设置保持不变,您可能需要为其制定 udev 规则。为此,请创建一个/etc/udev/rules.d/81-uvcvideo.rules
包含以下内容的文件:
# Set power line frequency to European
ACTION=="add", SUBSYSTEM=="video4linux", DRIVERS=="uvcvideo", RUN+="/usr/bin/v4l2-ctl --set-ctrl=power_line_frequency=1"
答案2
如果您使用的应用程序不允许您进行相关设置,并且没有“设置小程序”,请使用以下应用程序能进行这些设置。
一个突出的例子是guvcview
- GNU UVC 查看器程序。它是一个用于从设备捕获视频的实用程序Linux USB 视频类驱动程序(紫外线)。当您启动它时,您将找到电源线频率设置:
现在您可以将以美国为中心的 60 Hz 更改为比较普遍;普遍上50赫兹。
笔记:
- 如果其他应用程序正在主动使用相机,GUVCView 可能无法启动。
- 以这种方式设置频率不会在系统重新引导后持续存在。
答案3
使用 Linux UVC 驱动程序的控制实用程序
(这是@telcoM 答案的变体)
(USB) 网络摄像头由 Linux 控制USB视频客户端司机。他们的设备文件是/dev/video0
等等/dev/video1
。
驱动器设置之一是电源线频率,(通常)有 3 个选项:
0
对于禁用,即驱动程序根本不考虑电压周期。1
50 Hz(世界大部分地区)2
60 Hz(美国和其他一些国家)
Debian 系统上有两个可供此驱动程序使用的替代控制实用程序。其中一个被命名为v4l-ctl
,覆盖于电信的答复,另一个名为uvcdynctrl
;它与同名安装包裹,即您需要运行以下命令(作为 root 或 via sudo
):
apt install uvcdynctrl
安装软件包后,请执行以下操作(不一定以 root 用户身份 - 这取决于相机设备文件的权限):
列出可用的设备以确保您看到您的相机:
uvcdynctrl -l
输出应如下所示:
Listing available devices: video0 UVC Camera (046d:0825) Media controller device: /dev/media0 Entity 1: UVC Camera (046d:0825). Type: 65537, Revision: 0, Flags: 1, Group-id: 0, Pads: 1, Links: 0 Device node Entity: 1, Pad 0, Flags: 1 video1 UVC Camera (046d:0825) Media controller device /dev/media1 doesn't exist
- 假设您的设备是
/dev/media0
:webcam_device="video0"
- 获取当前电源线频率设置:
这次,输出应该只是一个数字。在您的情况下,它可能是uvcdynctrl -d${webcam_device} "--get=Power Line Frequency"
2
,对应于 60 Hz 的频率。 - 设置新的电源线频率:
uvcdynctrl -d${webcam_device} "--set=Power Line Frequency" 1
当然,如果您知道设备名称,则只需要第四个命令。
保留您的设置
然而,正如 @telcoM 所指出的,这不是一个持久的设置。为了使其持久化,您需要添加一个udev规则,在连接相机时执行。
创建一个名为 的文件/etc/udev/rules.d/81-uvcvideo.rules
,内容为:
# Set power line frequency to 50 Hz
ACTION=="add", SUBSYSTEM=="video4linux", DRIVERS=="uvcvideo", RUN+="/usr /bin/uvcdynctrl -d$attr{name} --set=Power\\ Line\\ Frequency 1"
笔记:
$attr{name}
应保存新连接设备的名称,例如等video0
。video1
- 从理论上讲,无论使用什么设备,都可以在全局范围内进行此设置。但是——谁知道呢?也许您的一台摄像机指向自然光线充足的房间,无需进行电力线频率校正。
- 上述规则尚未经过测试(!)