feat: log available v4l2 controls
Needs new option in config file log_v4l2ctrls: true This spits out the equvivalent to v4l2-ctl -L in log. See README for details. Signed-off-by: Stephan Wendel <me@stephanwe.de>
This commit is contained in:
parent
664d9b539b
commit
03d03f851e
28
README.md
28
README.md
@ -282,15 +282,33 @@ to your camera setup section. \
|
|||||||
Restart webcamd via mainsail (or your used UI) and you're good to go.
|
Restart webcamd via mainsail (or your used UI) and you're good to go.
|
||||||
|
|
||||||
To determine which options or better said parameters your Webcam provides, \
|
To determine which options or better said parameters your Webcam provides, \
|
||||||
login to your Pi via ssh and type
|
add to your
|
||||||
|
|
||||||
v4l2-ctl -d <yourdevice> -L
|
[webcamd]
|
||||||
|
|
||||||
_Note: Replace \<yourdevice> with the according string. ex.:_
|
section, simply
|
||||||
|
|
||||||
v4l2-ctl -d /dev/video0 -L
|
log_v4l2ctrls: true
|
||||||
|
|
||||||
This will show you a list with available options.
|
This will show you a list with available options. Like this:
|
||||||
|
|
||||||
|
[04/02/22 15:07:44] webcamd: Supported Controls:
|
||||||
|
[04/02/22 15:07:44] webcamd: brightness 0x00980900 (int) : min=1 max=255 step=1 default=128 value=128
|
||||||
|
[04/02/22 15:07:44] webcamd: contrast 0x00980901 (int) : min=1 max=255 step=1 default=128 value=128
|
||||||
|
[04/02/22 15:07:44] webcamd: saturation 0x00980902 (int) : min=1 max=255 step=1 default=128 value=128
|
||||||
|
[04/02/22 15:07:44] webcamd: white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
|
||||||
|
[04/02/22 15:07:44] webcamd: gain 0x00980913 (int) : min=1 max=100 step=1 default=50 value=50
|
||||||
|
[04/02/22 15:07:45] webcamd: power_line_frequency 0x00980918 (menu) : min=0 max=2 default=1 value=1
|
||||||
|
[04/02/22 15:07:45] webcamd: 0: Disabled
|
||||||
|
[04/02/22 15:07:45] webcamd: 1: 50 Hz
|
||||||
|
[04/02/22 15:07:45] webcamd: 2: 60 Hz
|
||||||
|
[04/02/22 15:07:45] webcamd: white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1 default=4650 value=4650 flags=inactive
|
||||||
|
[04/02/22 15:07:45] webcamd: sharpness 0x0098091b (int) : min=1 max=255 step=1 default=128 value=128
|
||||||
|
[04/02/22 15:07:45] webcamd: exposure_auto 0x009a0901 (menu) : min=0 max=3 default=0 value=0
|
||||||
|
[04/02/22 15:07:45] webcamd: 0: Auto Mode
|
||||||
|
[04/02/22 15:07:45] webcamd: 2: Shutter Priority Mode
|
||||||
|
[04/02/22 15:07:46] webcamd: exposure_absolute 0x009a0902 (int) : min=5 max=2500 step=1 default=5 value=5 flags=inactive
|
||||||
|
[04/02/22 15:07:46] webcamd: exposure_auto_priority 0x009a0903 (bool) : default=0 value=0
|
||||||
|
|
||||||
You have to "play around" with those settings if it matches your needs.
|
You have to "play around" with those settings if it matches your needs.
|
||||||
simply repeat the commands as mentioned earlier in your ssh connection.
|
simply repeat the commands as mentioned earlier in your ssh connection.
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# shellcheck enable=require-variable-braces
|
# shellcheck enable=require-variable-braces
|
||||||
|
|
||||||
# Exit upon Errors
|
# Exit upon Errors
|
||||||
set -e
|
set -eE
|
||||||
|
|
||||||
### Detect Hardware
|
### Detect Hardware
|
||||||
function detect_avail_cams {
|
function detect_avail_cams {
|
||||||
@ -30,6 +30,9 @@ function detect_avail_cams {
|
|||||||
if [ "$(log_level)" != "quiet" ]; then
|
if [ "$(log_level)" != "quiet" ]; then
|
||||||
list_cam_formats "${v4l}"
|
list_cam_formats "${v4l}"
|
||||||
fi
|
fi
|
||||||
|
if [ "$(log_v4l2ctrls)" == "true" ]; then
|
||||||
|
list_cam_v4l2ctrls "${v4l}"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
log_msg "INFO: No usable Cameras found."
|
log_msg "INFO: No usable Cameras found."
|
||||||
@ -54,7 +57,7 @@ function detect_avail_csi {
|
|||||||
|
|
||||||
# Used for "verbose" and "debug" logging in logging.sh
|
# Used for "verbose" and "debug" logging in logging.sh
|
||||||
function list_cam_formats {
|
function list_cam_formats {
|
||||||
local device
|
local device formats
|
||||||
device="${1}"
|
device="${1}"
|
||||||
formats="$(v4l2-ctl -d "${device}" --list-formats-ext | sed '1,3d')"
|
formats="$(v4l2-ctl -d "${device}" --list-formats-ext | sed '1,3d')"
|
||||||
log_msg "Supported Formats:"
|
log_msg "Supported Formats:"
|
||||||
@ -63,6 +66,16 @@ function list_cam_formats {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function list_cam_v4l2ctrls {
|
||||||
|
local device ctrls
|
||||||
|
device="${1}"
|
||||||
|
ctrls="$(v4l2-ctl -d "${device}" --list-ctrls-menus)"
|
||||||
|
log_msg "Supported Controls:"
|
||||||
|
echo "${ctrls}" | while read -r i; do
|
||||||
|
log_msg "\t\t${i}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# Determine connected "raspicam" device
|
# Determine connected "raspicam" device
|
||||||
function detect_raspicam {
|
function detect_raspicam {
|
||||||
local avail
|
local avail
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
# shellcheck enable=require-variable-braces
|
# shellcheck enable=require-variable-braces
|
||||||
|
|
||||||
# Exit upon Errors
|
# Exit upon Errors
|
||||||
set -e
|
set -eE
|
||||||
|
|
||||||
## Logging
|
## Logging
|
||||||
function init_log_entry {
|
function init_log_entry {
|
||||||
@ -35,6 +35,10 @@ function log_level {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function log_v4l2ctrls {
|
||||||
|
get_param webcamd log_v4l2ctrls 2> /dev/null || echo "false"
|
||||||
|
}
|
||||||
|
|
||||||
function delete_log {
|
function delete_log {
|
||||||
local del_log logfile
|
local del_log logfile
|
||||||
logfile="$(get_param "webcamd" log_path | sed "s#^~#${HOME}#gi")"
|
logfile="$(get_param "webcamd" log_path | sed "s#^~#${HOME}#gi")"
|
||||||
@ -104,6 +108,9 @@ function print_cams {
|
|||||||
if [ ! "$(log_level)" = "quiet" ]; then
|
if [ ! "$(log_level)" = "quiet" ]; then
|
||||||
list_cam_formats "${raspicam}"
|
list_cam_formats "${raspicam}"
|
||||||
fi
|
fi
|
||||||
|
if [ "$(log_v4l2ctrls)" == "true" ]; then
|
||||||
|
list_cam_v4l2ctrls "${raspicam}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -d "/dev/v4l/by-id/" ]; then
|
if [ -d "/dev/v4l/by-id/" ]; then
|
||||||
detect_avail_cams
|
detect_avail_cams
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
[webcamd]
|
[webcamd]
|
||||||
log_path: ~/klipper_logs/webcamd.log # Default logfile in ~/klipper_logs/webcamd.log
|
log_path: ~/klipper_logs/webcamd.log # Default logfile in ~/klipper_logs/webcamd.log
|
||||||
log_level: verbose # Valid Options are quiet/verbose/debug
|
log_level: verbose # Valid Options are quiet/verbose/debug
|
||||||
|
log_v4l2ctrls: true
|
||||||
|
|
||||||
[cam 1]
|
[cam 1]
|
||||||
mode: mjpg # mjpg/rtsp/webrtc
|
mode: mjpg # mjpg/rtsp/webrtc
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
[webcamd]
|
[webcamd]
|
||||||
log_path: ~/klipper_logs/webcamd.log # Default logfile in ~/klipper_logs/webcamd.log
|
log_path: ~/klipper_logs/webcamd.log # Default logfile in ~/klipper_logs/webcamd.log
|
||||||
log_level: quiet # Valid Options are quiet/verbose/debug
|
log_level: quiet # Valid Options are quiet/verbose/debug
|
||||||
|
log_v4l2ctrls: false # if set to true, it logs available controls for camera
|
||||||
|
delete_log: false # true to get fresh log on every start
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[cam 1]
|
[cam 1]
|
||||||
mode: mjpg # mjpg/rtsp/webrtc
|
mode: mjpg # mjpg/rtsp/webrtc ( webrtc is comming in the future )
|
||||||
port: 8080 # Port
|
port: 8080 # Port for ustreamer
|
||||||
device: /dev/video0 # See Log for available ...
|
device: /dev/video0 # See Log for available ...
|
||||||
resolution: 640x480 # widthxheight format
|
resolution: 640x480 # WidthxHeight format
|
||||||
max_fps: 15 # If Hardware Supports this it will be forced, ohterwise ignored/coerced.
|
max_fps: 15 # If Hardware Supports this it will be forced, ohterwise ignored/coerced.
|
||||||
#custom_flags: # You can run the Stream Services with custom flags.
|
#custom_flags: # Custom Flags to set for ustreamer, this is optional
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user