video-clip-sh/find_split
2025-02-16 23:05:24 -08:00

101 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
BIN_DIR=$(dirname "$0")
BIG_SHIFT=6
MID_SHIFT=4
SMALL_SHIFT=1
BIG_MOVE="$BIG_SHIFT"0
MID_MOVE="$MID_SHIFT"0
SMALL_MOVE="$SMALL_SHIFT"0
BIG_JUMP="$BIG_SHIFT"00
MID_JUMP="$MID_SHIFT"00
SMALL_JUMP="$SMALL_SHIFT"00
BIG_SKIP="$BIG_SHIFT"000
MID_SKIP="$MID_SHIFT"000
SMALL_SKIP="$SMALL_SHIFT"000
IN_VIDEO="$1"
SPLIT_GUESS="$2"
DISPLAY_RANGE_FRAMES="$3"
SIDE="$4"
MODE="av"
echo "Playing $(basename "$IN_VIDEO") on $SIDE of split at $SPLIT_GUESS \(with $DISPLAY_RANGE_FRAMES extra frames\)."
case $SIDE in
left)
START_FRAME=$((SPLIT_GUESS - DISPLAY_RANGE_FRAMES))
END_FRAME=$SPLIT_GUESS
;;
right)
START_FRAME=$((SPLIT_GUESS + 1))
END_FRAME=$((SPLIT_GUESS + DISPLAY_RANGE_FRAMES))
;;
esac
"$BIN_DIR/play_frames" "$IN_VIDEO" "$START_FRAME" "$END_FRAME" "$MODE" >/dev/null 2>/dev/null
CMD=$("$BIN_DIR/read_keypress")
case $CMD in
\`) echo "'$0'" "'$IN_VIDEO'" "$SPLIT_GUESS" "$DISPLAY_RANGE_FRAMES" "$SIDE"
exit
;;
\\) case $SIDE in
left) SIDE="right" ;;
right) SIDE="left" ;;
esac
;;
=) case $MODE in
av)
echo Disabled video output. In audio-only mode.
MODE="audio"
;;
audio)
echo Enabled video output. In audio-video mode.
MODE="av"
;;
esac
;;
a) SPLIT_GUESS=$((SPLIT_GUESS - BIG_SHIFT)) ;;
A) SPLIT_GUESS=$((SPLIT_GUESS - BIG_MOVE)) ;;
s) SPLIT_GUESS=$((SPLIT_GUESS - MID_SHIFT)) ;;
S) SPLIT_GUESS=$((SPLIT_GUESS - MID_MOVE)) ;;
d) SPLIT_GUESS=$((SPLIT_GUESS - SMALL_SHIFT)) ;;
D) SPLIT_GUESS=$((SPLIT_GUESS - SMALL_MOVE)) ;;
f) SPLIT_GUESS=$((SPLIT_GUESS + SMALL_SHIFT)) ;;
F) SPLIT_GUESS=$((SPLIT_GUESS + SMALL_MOVE)) ;;
g) SPLIT_GUESS=$((SPLIT_GUESS + MID_SHIFT)) ;;
G) SPLIT_GUESS=$((SPLIT_GUESS + MID_MOVE)) ;;
h) SPLIT_GUESS=$((SPLIT_GUESS + BIG_SHIFT)) ;;
H) SPLIT_GUESS=$((SPLIT_GUESS + BIG_MOVE)) ;;
q) SPLIT_GUESS=$((SPLIT_GUESS - BIG_JUMP)) ;;
Q) SPLIT_GUESS=$((SPLIT_GUESS - BIG_SKIP)) ;;
w) SPLIT_GUESS=$((SPLIT_GUESS - MID_JUMP)) ;;
W) SPLIT_GUESS=$((SPLIT_GUESS - MID_SKIP)) ;;
e) SPLIT_GUESS=$((SPLIT_GUESS - SMALL_JUMP)) ;;
E) SPLIT_GUESS=$((SPLIT_GUESS - SMALL_SKIP)) ;;
r) SPLIT_GUESS=$((SPLIT_GUESS + SMALL_JUMP)) ;;
R) SPLIT_GUESS=$((SPLIT_GUESS + SMALL_SKIP)) ;;
t) SPLIT_GUESS=$((SPLIT_GUESS + MID_JUMP)) ;;
T) SPLIT_GUESS=$((SPLIT_GUESS + MID_SKIP)) ;;
y) SPLIT_GUESS=$((SPLIT_GUESS + BIG_JUMP)) ;;
Y) SPLIT_GUESS=$((SPLIT_GUESS + BIG_SKIP)) ;;
z) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES - BIG_SHIFT)) ;;
Z) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES - BIG_MOVE)) ;;
x) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES - MID_SHIFT)) ;;
X) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES - MID_MOVE)) ;;
c) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES - SMALL_SHIFT)) ;;
C) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES - SMALL_MOVE)) ;;
v) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES + SMALL_SHIFT)) ;;
V) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES + SMALL_MOVE)) ;;
b) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES + MID_SHIFT)) ;;
B) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES + MID_MOVE)) ;;
n) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES + BIG_SHIFT)) ;;
N) DISPLAY_RANGE_FRAMES=$((DISPLAY_RANGE_FRAMES + BIG_MOVE)) ;;
esac
exec "$0" "$IN_VIDEO" "$SPLIT_GUESS" "$DISPLAY_RANGE_FRAMES" "$SIDE"