You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Odroid等待RTSP流激活后再启动播放?

问题:实现摄像头与Odroid同时开机时自动启动RTSP流播放

设备配置

  • 海康威视IP摄像头
  • 交换机
  • 运行Ubuntu系统的Odroid

核心需求

摄像头与Odroid均配置静态IP,要求两台设备同时开机时,RTSP流能自动启动并在显示器上显示摄像头实时画面。

当前实现方案

  1. 编写bash脚本startvideo.sh:
#!/bin/bash
while true; do
  /usr/bin/cvlc -vvv -f 'rtsp://摄像头静态IP/流地址'
  sleep 5
done
  1. 赋予脚本执行权限:
chmod +x startvideo.sh
  1. 将脚本添加至Ubuntu自动启动列表。

遇到的问题

当Odroid在摄像头已激活后开机时,流播放正常;但摄像头与Odroid同时开机时,Odroid开机速度快于摄像头,脚本因无法连接摄像头而启动失败。

尝试过的无效方法

  1. 在循环前添加固定延迟:
#!/bin/bash
sleep 180

while true; do
  /usr/bin/cvlc -vvv -f 'rtsp://摄像头静态IP/流地址'
  sleep 5
done

固定延迟不可靠——摄像头启动时间存在波动,延迟过短仍会失败,过长则浪费等待时间。

  1. 尝试用ping检测摄像头状态:
#!/bin/bash
while true; 
do
    if ping -c1 摄像头静态IP &> /dev/null
    then
        /usr/bin/cvlc -vvv -f 'rtsp://摄像头静态IP/流地址'
        sleep 5
        break;
    else
        echo '摄像头未激活'
    fi
    sleep 3 
done

该脚本仅检测一次摄像头激活就退出循环,若VLC播放过程中摄像头断开(如重启),无法自动重连;且ping通仅代表网络可达,不代表RTSP服务已就绪,检测逻辑不准确。

解决方案:改进版检测+重连脚本

以下脚本会持续验证摄像头的RTSP服务可用性(而非仅检测网络连通),直到服务就绪后启动VLC,且VLC退出后会重新检测重连,确保稳定性:

#!/bin/bash
# 配置参数
CAMERA_IP="你的摄像头静态IP"
# 海康威视常用RTSP地址,需替换为实际地址,带认证格式为rtsp://用户名:密码@IP/h264/ch1/main/av_stream
RTSP_URL="rtsp://${CAMERA_IP}/h264/ch1/main/av_stream"
WAIT_INTERVAL=3 # 检测间隔(秒)

# 等待摄像头RTSP服务就绪
wait_for_camera() {
    while true; do
        # 用cvlc静默测试连接,无音视频输出,仅验证RTSP服务是否可用
        if /usr/bin/cvlc --play-and-exit --no-video --no-audio "${RTSP_URL}" 2>/dev/null; then
            echo "摄像头RTSP服务已就绪"
            break
        else
            echo "等待摄像头启动中..."
            sleep ${WAIT_INTERVAL}
        fi
    done
}

# 主循环:启动VLC,退出后重新检测摄像头
while true; do
    wait_for_camera
    echo "启动VLC播放RTSP流..."
    /usr/bin/cvlc -vvv -f "${RTSP_URL}"
    echo "VLC退出,将重新检测摄像头..."
    sleep ${WAIT_INTERVAL}
done

脚本说明

  1. RTSP地址调整:若摄像头启用了认证,需在URL中加入用户名和密码,例如rtsp://admin:12345@192.168.1.100/h264/ch1/main/av_stream,具体格式可参考海康威视官方文档。
  2. 检测逻辑优化:直接用cvlc尝试静默连接,比ping更准确——ping通仅代表网络可达,而RTSP服务可能还未完成启动。
  3. 自动重连机制:即使播放过程中摄像头断开(如断电重启),脚本会重新进入等待检测流程,恢复连接后自动重启VLC。

部署注意事项

  1. 替换脚本中的CAMERA_IP和RTSP_URL为实际值。
  2. 保持脚本的自动启动配置不变,确保Odroid开机后自动运行该脚本。

内容的提问来源于stack exchange,提问作者sander voogt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:02:39