gf_ai_box/tools/device/demo_rtsp_hdmi.sh
2026-04-12 17:47:54 +08:00

59 lines
2.1 KiB
Bash

#!/bin/sh
# by mars
set -e
BIN_DIR=/mnt/flash/plus/kp_firmware/kp_firmware_0/kp_firmware/bin
FW=/mnt/flash/vienna/kp_firmware_host_stream
INI=$BIN_DIR/ini/host_stream.ini
cd $BIN_DIR
# Load hardware drivers if not already loaded (required for EDMC/NPU)
[ -e /dev/vpl_edmc ] || (cd /mnt/flash/vienna/drivers && sh driver.sh 2>/dev/null && sleep 1)
killall -9 kp_firmware_host_stream 2>/dev/null || true
killall -9 rtsps 2>/dev/null || true
sleep 1
rm -f /dev/shm/*
# Optional override: PIXFMT=NV21 MODEL_PATH=nef/other.nef MODEL_ID=xxxxx JOB_ID=yyy ./demo_rtsp_hdmi.sh
PIXFMT=${PIXFMT:-NV12}
# Model settings — read from INI as default, env var overrides at runtime
_ini_val() { grep "^$1" "$INI" | sed 's/.*= *//' | tr -d '"' | awk '{print $1}'; }
MODEL_PATH=${MODEL_PATH:-$(_ini_val ModelPath)}
MODEL_ID=${MODEL_ID:-$(_ini_val ModelId)}
JOB_ID=${JOB_ID:-$(_ini_val JobId)}
# Combined RTSP + HDMI profile.
# InferenceStream=1 uses stream1 (724x362) for inference.
# DrawOnResize=1 so segmentation overlay is drawn on resize streams (RTSP streams).
sed -i 's/^NnmSource.*/NnmSource = 0/' $INI
sed -i 's/^GetImageBufMode.*/GetImageBufMode = 0/' $INI
sed -i 's/^InferenceStream.*/InferenceStream = 1/' $INI
sed -i 's/^StreamCount.*/StreamCount = 2/' $INI
sed -i 's/^voc_enable.*/voc_enable = 1/' $INI
sed -i "s/^PixFmt.*/PixFmt = ${PIXFMT}/" $INI
# DrawBoxEnable: respect INI value set by web UI (do not override)
# DrawOnResize: not needed — firmware auto-disables it when InferenceStream != 0
echo "=== RTSP+HDMI Demo INI ==="
grep -E "ModelPath|ModelId|JobId|NnmSource|GetImageBufMode|InferenceStream|StreamCount|voc_enable|PixFmt|DrawBoxEnable|DrawOnResize" $INI
echo "=== Model (runtime): MODEL_PATH=$MODEL_PATH MODEL_ID=$MODEL_ID JOB_ID=$JOB_ID ==="
echo "=== Start Firmware (RTSP+HDMI demo) ==="
LD_LIBRARY_PATH=/mnt/flash/vienna/lib $FW -m "$MODEL_PATH" -i "$MODEL_ID" -j "$JOB_ID" &
FW_PID=$!
sleep 4
# Start RTSP server that reads venc_srb_* output.
LD_LIBRARY_PATH=/mnt/flash/vienna/lib ./rtsps -c stream_server_config.ini &
RTSP_PID=$!
echo "Firmware PID: $FW_PID"
echo "RTSP PID: $RTSP_PID"
echo "RTSP URL: rtsp://192.168.3.10/live1.sdp"
wait $FW_PID