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

为IP摄像头搭建MediaMTX RTSP代理遇Exit1异常,请求排查

RTSP代理(MediaMTX)Exit1异常排查步骤
  • 优先查看MediaMTX启动日志
    启动容器时的终端输出会包含具体错误信息,重点查找error、warning关键词,比如源RTSP连接失败、端口占用、配置文件解析错误等。这些日志是定位问题的核心依据。

  • 验证源RTSP流的可用性
    先排除源端问题,直接用ffmpeg或VLC测试原始流:

    # 用ffmpeg测试源流
    ffmpeg -rtsp_transport tcp -i rtsp://original-url -vcodec copy -f null -
    

    如果测试失败,说明问题出在IP摄像头端,比如带宽不足、摄像头认证错误、网络不通,需要先解决源端问题。

  • 核对端口与网络配置

    • 检查端口一致性:MediaMTX默认RTSP端口是8554,但你的ffmpeg命令中使用了8854,这是明显的端口错误,需统一改为8554。
    • 确认端口未被占用:用以下命令检查8554端口是否被其他程序占用:
      ss -tulpn | grep 8554
      
    • 验证Docker网络:--network=host模式下容器直接使用主机网络,确保主机能正常访问摄像头的RTSP端口。
  • 检查配置文件有效性

    • 配置文件挂载是否成功:启动日志中需包含loaded config from /mediamtx.yml,否则说明挂载路径错误(比如$PWD是否为配置文件所在目录)。
    • 路径配置优先级:如果同时配置了all和proxied路径,proxied作为具体路径会覆盖all的配置,需确保proxied的source地址正确,若源地址包含特殊字符(如密码中的@、&),需进行URL编码。
    • 认证配置的使用:若添加了readUser和readPass,访问代理流时必须携带认证信息,比如:
      rtsp://user:userpass@localhost:8554/proxied
      
  • 修正ffmpeg命令参数
    你的ffmpeg命令中错误添加了-re参数,该参数用于推流时模拟实时速率,拉流时无需使用,修正后的命令示例:

    cmd := exec.Command("ffmpeg", "-rtsp_transport", "tcp", "-i", "rtsp://user:userpass@localhost:8554/proxied", "-c:v", "copy", "-f", "segment", "-segment_time", "300", "-segment_format", "mp4", "-segment_list", "recordings/playlist.m3u8", "-segment_list_entry_prefix", "recordings/", "-nostdin", "recordings/output-%03d.mp4")
    

    执行时捕获stderr输出,查看具体错误(比如无法连接、流格式不兼容)。

  • 尝试更换MediaMTX版本
    若以上步骤无效,可能是版本兼容问题,尝试使用最新稳定版镜像:

    docker run --rm -it --network=host -v $PWD/mediamtx.yml:/mediamtx.yml aler9/rtsp-simple-server:latest
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:45:44