如何更改网络摄像头的电源线频率设置?

如何更改网络摄像头的电源线频率设置?

我在 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对于禁用,即驱动程序根本不考虑电压周期。
  • 150 Hz(世界大部分地区)
  • 260 Hz(美国和其他一些国家)

Debian 系统上有两个可供此驱动程序使用的替代控制实用程序。其中一个被命名为v4l-ctl,覆盖于电信的答复,另一个名为uvcdynctrl;它与同名安装包裹,即您需要运行以下命令(作为 root 或 via sudo):

apt install uvcdynctrl

安装软件包后,请执行以下操作(不一定以 root 用户身份 - 这取决于相机设备文件的权限):

  1. 列出可用的设备以确保您看到您的相机:

    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
    
  2. 假设您的设备是/dev/media0
    webcam_device="video0"
    
  3. 获取当前电源线频率设置:
    uvcdynctrl -d${webcam_device} "--get=Power Line Frequency"
    
    这次,输出应该只是一个数字。在您的情况下,它可能是2,对应于 60 Hz 的频率。
  4. 设置新的电源线频率:
    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}应保存新连接设备的名称,例如等video0video1
  • 从理论上讲,无论使用什么设备,都可以在全局范围内进行此设置。但是——谁知道呢?也许您的一台摄像机指向自然光线充足的房间,无需进行电力线频率校正。
  • 上述规则尚未经过测试(!)

相关内容