feat(mcap): add paced replay tooling
This commit is contained in:
Executable
+68
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
BUILD_DIR="${BUILD_DIR:-$ROOT_DIR/build}"
|
||||
REPLAY_BIN="${REPLAY_BIN:-$BUILD_DIR/mcap_replay_tester}"
|
||||
FFPLAY_BIN="${FFPLAY_BIN:-ffplay}"
|
||||
FFPLAY_ARGS="${FFPLAY_ARGS:-}"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage:
|
||||
replay_mcap.sh <input.mcap> [h264|h265]
|
||||
|
||||
This replays MCAP video using the recorded timestamps and pipes frames to ffplay.
|
||||
The optional codec argument defaults to h264. Extra ffplay flags may be supplied
|
||||
via FFPLAY_ARGS, for example: FFPLAY_ARGS='-window_title replay'.
|
||||
EOF
|
||||
}
|
||||
|
||||
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ $# -lt 1 || $# -gt 2 ]]; then
|
||||
usage >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
INPUT_PATH="$1"
|
||||
FORMAT="${2:-h264}"
|
||||
if [[ "$FORMAT" != "h264" && "$FORMAT" != "h265" ]]; then
|
||||
echo "unsupported format: $FORMAT (expected h264 or h265)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$INPUT_PATH" ]]; then
|
||||
echo "input MCAP not found: $INPUT_PATH" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -x "$REPLAY_BIN" ]]; then
|
||||
echo "replay binary not found: $REPLAY_BIN" >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v "$FFPLAY_BIN" >/dev/null 2>&1; then
|
||||
echo "ffplay not found: $FFPLAY_BIN" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
extra_args=()
|
||||
if [[ -n "$FFPLAY_ARGS" ]]; then
|
||||
# shellcheck disable=SC2206
|
||||
extra_args=($FFPLAY_ARGS)
|
||||
fi
|
||||
|
||||
cmd=(
|
||||
"$REPLAY_BIN"
|
||||
"$INPUT_PATH"
|
||||
--expect-format "$FORMAT"
|
||||
--ffplay-path "$FFPLAY_BIN"
|
||||
)
|
||||
|
||||
for arg in "${extra_args[@]}"; do
|
||||
cmd+=(--ffplay-arg "$arg")
|
||||
done
|
||||
|
||||
"${cmd[@]}"
|
||||
Reference in New Issue
Block a user