sc235hai_driver/deploy-rtsp.sh

85 lines
2.1 KiB
Bash

#!/bin/bash
# deploy-rtsp.sh - SC235HAI RTSP Streaming Server Deployment
# Usage: ./deploy-rtsp.sh [start|stop|restart]
set -e
RTSP_DIR="/root"
MEDIAMTX_VERSION="v1.9.3"
MEDIAMTX_URL="https://github.com/bluenviron/mediamtx/releases/download/${MEDIAMTX_VERSION}/mediamtx_${MEDIAMTX_VERSION}_linux_arm64v8.tar.gz"
MEDIAMTX_BIN="${RTSP_DIR}/mediamtx"
MEDIAMTX_CONFIG="${RTSP_DIR}/mediamtx.yml"
RTSP_PORT=8554
download_mediamtx() {
if [ ! -f "$MEDIAMTX_BIN" ]; then
echo "[INFO] Downloading mediamtx ${MEDIAMTX_VERSION}..."
cd "$RTSP_DIR"
curl -L -o mediamtx.tar.gz "$MEDIAMTX_URL"
tar -xzf mediamtx.tar.gz mediamtx mediamtx.yml
rm -f mediamtx.tar.gz
chmod +x "$MEDIAMTX_BIN"
echo "[OK] mediamtx installed at $MEDIAMTX_BIN"
else
echo "[OK] mediamtx already installed"
fi
}
start_rtsp() {
download_mediamtx
# Kill any existing instance
pkill -f "mediamtx" 2>/dev/null || true
sleep 1
# Copy config from script directory if present
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -f "${SCRIPT_DIR}/mediamtx.yml" ]; then
cp "${SCRIPT_DIR}/mediamtx.yml" "$MEDIAMTX_CONFIG"
echo "[OK] Using mediamtx.yml from script directory"
fi
# Start mediamtx
cd "$RTSP_DIR"
nohup "$MEDIAMTX_BIN" "$MEDIAMTX_CONFIG" > /var/log/mediamtx.log 2>&1 &
PID=$!
sleep 3
# Verify it's running
if kill -0 $PID 2>/dev/null; then
echo "[OK] MediaMTX started (PID: $PID)"
echo "[OK] RTSP stream available at: rtsp://$(hostname -I | awk '{print $1}'):${RTSP_PORT}/cam"
else
echo "[ERROR] Failed to start MediaMTX"
cat /var/log/mediamtx.log
return 1
fi
}
stop_rtsp() {
pkill -f "mediamtx" 2>/dev/null || true
echo "[OK] MediaMTX stopped"
}
restart_rtsp() {
stop_rtsp
sleep 1
start_rtsp
}
case "${1:-start}" in
start)
start_rtsp
;;
stop)
stop_rtsp
;;
restart)
restart_rtsp
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac