mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
40 lines
1.0 KiB
Bash
40 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|
# Rover Snapshot Writer Hook
|
|
# Purpose: Runs under mediaMTX runOnReady to keep per-rover JPEG snapshots updated on disk.
|
|
# Scope: Writes only rover video path snapshots and ignores audio/forward/room paths.
|
|
set -euo pipefail
|
|
|
|
PATH_NAME="${MTX_PATH:-}"
|
|
SNAP_DIR="${ROVER_SNAPSHOT_DIR:-/var/lib/rover-snapshots}"
|
|
|
|
# Ignore non-rover-video paths.
|
|
case "$PATH_NAME" in
|
|
""|*-audio|*-fwd|room/*)
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
mkdir -p "$SNAP_DIR"
|
|
|
|
FILTER="fps=1"
|
|
QUALITY="6"
|
|
|
|
case "$PATH_NAME" in
|
|
ptz-camera)
|
|
# PTZ snapshots are shown to non-operators specifically to avoid sending the
|
|
# full live video stream. The PTZ publisher is full-resolution 16:9 video,
|
|
# so resize the JPEGs at the snapshot writer boundary before Node ever reads
|
|
# and fans them out over Socket.IO.
|
|
FILTER="fps=1,scale=480:-2"
|
|
QUALITY="10"
|
|
;;
|
|
esac
|
|
|
|
exec ffmpeg -hide_banner -loglevel warning -nostdin -y \
|
|
-i "srt://127.0.0.1:9000?streamid=read:${PATH_NAME}" \
|
|
-an \
|
|
-vf "$FILTER" \
|
|
-q:v "$QUALITY" \
|
|
-update 1 \
|
|
"${SNAP_DIR}/${PATH_NAME}.jpg"
|