From e43eb1177872f52e949fb5f0f93396ed94b0d093 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Sun, 2 Aug 2026 14:48:29 +0200 Subject: move to chezmoi --- home/dot_local/share/bin/executable_ccpreview | 74 +++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 home/dot_local/share/bin/executable_ccpreview (limited to 'home/dot_local/share/bin/executable_ccpreview') diff --git a/home/dot_local/share/bin/executable_ccpreview b/home/dot_local/share/bin/executable_ccpreview new file mode 100644 index 0000000..9f13acc --- /dev/null +++ b/home/dot_local/share/bin/executable_ccpreview @@ -0,0 +1,74 @@ +#!/bin/sh + +# capture card sysfs device path +SYSFS_PATH="/devices/pci0000:00/0000:00:14.0/usb1/1-12" + +# script args +WIDTH="$1" +HEIGHT="$2" +FRAMERATE="$3" + +# find audio device (pulseaudio) +PULSE_DEVICE="$(pactl -f json list sources | jq \ + --arg sysfs_path "$SYSFS_PATH" --raw-output \ + '.[] | select(.properties["sysfs.path"] | . != null and startswith($sysfs_path)) | .name')" +AUDIO_URL="av://pulse:$PULSE_DEVICE" + +# find video device (video4linux) +V4L_PATH="$(find "/sys$SYSFS_PATH" -name 'video4linux' | head -n1)" +V4L_PATH="$(find "$V4L_PATH" -name 'index' | xargs grep -l '^0$')" +V4L_PATH="$(echo "$V4L_PATH" | sed 's#/index$#/uevent#')" +VIDEO_DEVICE="$(. "$V4L_PATH" ; echo "/dev/$DEVNAME")" +VIDEO_DEVICE="$(readlink -f "$VIDEO_DEVICE")" +VIDEO_URL="av://v4l2:$VIDEO_DEVICE" + +RESOLUTION="${WIDTH}x${HEIGHT}" + +fork() { + JOBS="$JOBS $( + "$@" > /dev/null 2> /dev/null & + echo $! + )" +} + +# set capture card v4l parameters +v4l2-ctl --silent --device "$VIDEO_DEVICE" \ + --set-parm "$FRAMERATE" \ + --set-fmt-video "width=$WIDTH,height=$HEIGHT,pixelformat=MJPG" \ + --set-ctrl "brightness=0,contrast=128,saturation=128,hue=0" + +_mpv() { + fork mpv \ + --quiet --msg-level=input=no \ + --no-config --input-conf=/dev/null \ + --no-osc --no-border \ + --no-input-default-bindings --pause=no --force-seekable=no \ + --cache=no \ + "$@" +} + +# audio preview +_mpv \ + --no-demuxer-thread \ + --audio-buffer=0 \ + --cache-pause=no \ + --interpolation=no \ + --stream-buffer-size=4k \ + --profile=low-latency \ + --speed=1.001 \ + "$AUDIO_URL" + +# video preview +_mpv \ + --untimed --no-correct-pts --no-demuxer-thread \ + --profile=low-latency \ + --demuxer-lavf-o-add=input_format=mjpeg \ + --demuxer-lavf-o-add=framerate="$FRAMERATE" \ + --demuxer-lavf-o-add=resolution="$RESOLUTION" \ + --demuxer-lavf-o-add=rw_timeout=30000000 \ + --speed=1.05 \ + "$VIDEO_URL" + +sleep infinity +kill -9 -- $JOBS + -- cgit v1.2.3