blob: 0a4a297afec4db4a035cbe8004f30c4d174573f7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#!/bin/sh
case "$1" in
-h | h | hflip) flip="--vf=lavfi=hflip" ;;
-v | v | vflip) flip="--vf=lavfi=vflip" ;;
-hv | hv | hvflip) flip="--vf=lavfi=hflip,vflip" ;;
*) flip="" ;;
esac
# Extract full camera names and their first /dev/video* device
cameras=$(
v4l2-ctl --list-devices | awk '
BEGIN { RS=""; FS="\n" }
{
name = $1;
sub(/ \(.*$/, "", name);
gsub(/^[ \t]+|[ \t]+$/, "", name);
for (i=2; i<=NF; i++) {
if ($i ~ /\/dev\/video/) {
gsub(/^[ \t]+/, "", $i);
print name "|" $i;
break;
}
}
}'
)
# Extract only camera names for dmenu
names=$(echo "$cameras" | cut -d '|' -f1)
# Select camera with dmenu
choice=$(echo "$names" | dmenu -i -p 'Choose a camera:')
# Find corresponding /dev/video* device
camera=$(echo "$cameras" | awk -F '|' -v sel="$choice" '$1 == sel {print $2}')
# If no selection, exit
[ -z "$camera" ] && exit 1
mpv --untimed \
--no-cache \
--no-osc \
--no-input-default-bindings \
--profile=low-latency \
--input-conf=/dev/null \
--title=webcam \
--x11-name=webcam \
$flip "$camera"
|