35 lines
975 B
Bash
35 lines
975 B
Bash
#!/usr/bin/env bash
|
||
|
||
VIDEO_DIR="/home/admin-root/haotian/康达瑞贝斯机器狗/data_video" # 你的 .mp4 文件目录
|
||
RTSP_SERVER="rtsp://10.0.0.17:8554/camera_test"
|
||
|
||
|
||
# 捕获 SIGINT(Ctrl+C)和 SIGTERM,触发 exit(进而触发 EXIT trap)
|
||
trap "exit" INT TERM
|
||
|
||
# EXIT 触发时,终止当前进程组(包括所有子进程)
|
||
trap "kill 0" EXIT
|
||
|
||
for filepath in "$VIDEO_DIR"/*.mp4; do
|
||
[ -e "$filepath" ] || continue
|
||
filename=$(basename "$filepath" .mp4)
|
||
RTSP_URL="${RTSP_SERVER}/${filename}"
|
||
|
||
(
|
||
while true; do
|
||
echo "$(date): 推流 -> $RTSP_URL"
|
||
ffmpeg -re -stream_loop -1 -i "$filepath" \
|
||
-vf "scale=1920:1080" \
|
||
-c:v libx264 -preset veryfast -tune zerolatency \
|
||
-c:a aac -b:a 128k \
|
||
-muxdelay 0 -muxpreload 0 \
|
||
-f rtsp -rtsp_transport tcp \
|
||
"$RTSP_URL"
|
||
echo "$(date): 推流中断,5 秒后重启 -> $RTSP_URL"
|
||
sleep 5
|
||
done
|
||
) &
|
||
done
|
||
|
||
# 等待所有后台任务
|
||
wait |