我可以成功更改我想要的设置值,v4l2-ctl --set-ctrl=exposure_auto_priority=1
但我想知道如何将其设为默认设置,默认值为 0,这会让我的网络摄像头变黑,我需要将其设为默认值=1
答案1
您还可以使用 udev 子系统在设备插入或机器启动时建立设置。
例如,下面是我在 Logitech HD Pro C920 网络摄像头上设置电源线频率的方法,系统盘说有 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"
您可以按照相同的方法,修改 USB ID 和v4l2-ctl参数以满足您的确切需求。您可以测试v4l2-ctl从命令行输入参数,直到您确信它们可以工作,然后将该文本放入 udev 规则文件中。
这种方法的优点是它“有效”。每次插入设备时都会应用设置。如果您是多台机器的系统管理员,那么您可以为机构的所有设备推出规则文件,直到将 USB ID 插入机器后才会使用它们。
答案2
由于每次启动后设置都会丢失,因此您应该在会话启动时运行脚本来应用使用 Video4Linux 面板生成的值。
要查看调整后的值,请在终端上输入:
v4l2-ctl --all
创建脚本后,将其添加到启动会话...
这是我的启动脚本:
#!/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
我希望这个对你有用...
答案3
如果你有Video4Linux 控制面板,您可以尝试取消选中底部的 Exposure_Auto_Priority 复选框,看看是否有帮助......
希望它有帮助...祝你好运!
答案4
这并非您真正想要的,但您可以轻松调整它以设置您喜欢的默认值。这会将所有内容恢复为出厂默认值。
device="/dev/video2"
function all_default() {
while read this_train
do
parameter=$( sed -rn 's/^ *([^ ]*) .*/\1/p;' <<< $this_train)
default=$( sed -rn "s/^.* default=([^ ]*) ?.*/\1/p;" <<< $this_train)
echo v4l2-ctl -d $device --set-ctrl=$parameter=$default
v4l2-ctl -d $device --set-ctrl=$parameter=$default
done <<< $(v4l2-ctl -d $device --list-ctrls | sed -r "/:/!d;")
echo "Chattanooga choo choo, won't you choo-choo me home..."
echo "The setting does not seem to be permanent until you play:"
echo "https://www.bitchute.com/video/fgvFDTeeXzsb/"
echo "A strange bug... :-)"
}
all_default