V4L2 更改默认设置?

Lem*_*gex 7 video webcam skype

我可以成功更改我想要的设置的值,v4l2-ctl --set-ctrl=exposure_auto_priority=1但我想知道如何将其设为默认设置,默认值为 0,这使我的网络摄像头变黑,我需要将其设为默认值 = 1

vk5*_*5tu 11

您还可以使用 udev 子系统在设备插入或机器启动时建立设置。

例如,这里是我如何在我的 Logitech HD Pro C920 网络摄像头上设置电源线频率,lsusb说它有 USB ID 046d:082d

以 root 身份创建一个新的世界可读文件/etc/udev/rules.d/99-local-webcam.rules。它包含了:

SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="082d", PROGRAM="/usr/bin/v4l2-ctl --set-ctrl power_line_frequency=1 --device /dev/%k"
Run Code Online (Sandbox Code Playgroud)

您可以按照相同的方法,修改 USB ID 和v4l2-ctl参数以满足您的确切需求。您可以从命令行测试v4l2-ctl参数,直到您觉得它们可以工作为止,然后将该文本放入 udev 规则文件中。

这种方法的优点是它“有效”。每次插入设备时,都会应用设置。如果您是许多机器的系统管理员,那么您可以为您机构的所有设备推出规则文件,直到将 USB ID 插入机器后才会使用这些文件。


小智 8

由于每次启动后设置都会丢失,您应该在会话启动时运行脚本以应用您使用 Video4Linux 面板生成的值。

要在终端上查看调整后的值类型:

v4l2-ctl --all
Run Code Online (Sandbox Code Playgroud)

创建脚本后,将其添加到启动会话中...

这是我的启动脚本:

#!/bin/bash
v4l2-ctl \
--set-ctrl=brightness=150 \
--set-ctrl=contrast=51 \
--set-ctrl=saturation=32 \
--set-ctrl=white_balance_temperature_auto=0 \
--set-ctrl=gain=90 \
--set-ctrl=power_line_frequency=1 \
--set-ctrl=white_balance_temperature=1140 \
--set-ctrl=sharpness=24 \
--set-ctrl=backlight_compensation=1 \
--set-ctrl=exposure_auto=1 \
--set-ctrl=exposure_absolute=870 \
--set-ctrl=exposure_auto_priority=1
Run Code Online (Sandbox Code Playgroud)

我希望这个对你有用...


SoC*_*Rob 7

如果您有Video4Linux Control Panel,您可以尝试取消选中底部的 Exposure_Auto_Priority 复选框,看看是否有帮助...

在此处输入图片说明

希望它有帮助...祝你好运!