You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Amcrest IP摄像头的RTSP流加密发布至MediaMTX实例?

如何将Amcrest IP摄像头的RTSP流加密发布至MediaMTX实例?

看了你的问题和报错信息,核心问题集中在路径不匹配、重复拉流逻辑以及TLS配置的细节上,给你几个针对性的排查和解决方向:

  • 修正推流路径,匹配MediaMTX的配置
    报错里明确提示path 'stream/cam1' is not configured,这说明你用ffmpeg推流的路径和MediaMTX配置里的路径不对应。你在yml的paths节点下定义的是cam1,所以推流地址应该改为rtsps://localhost:8322/cam1,而不是带/stream/前缀的路径。先把这个路径改过来,这是最直接的问题。

  • 移除重复拉流逻辑,利用MediaMTX原生转加密流
    你现在的配置有点冗余:paths.cam1.source已经直接拉取摄像头的RTSP流了,同时又用runOnInit调用ffmpeg再拉一次推送到RTSPS,属于重复操作。其实MediaMTX本身就支持将输入的普通RTSP流自动转换成加密的RTSPS流对外提供,你只需要确保TLS配置正确,客户端直接用rtsps://localhost:8322/cam1就能访问加密后的流,完全不需要额外的ffmpeg推流步骤。建议删掉runOnInit这一行,简化配置。

  • 确认MediaMTX的TLS配置完全生效
    检查你的mediamtx.yml里的TLS相关配置是否正确:

    rtsps:
      enable: true
      port: 8322
      tlsCert: server.crt
      tlsKey: server.key
    

    要保证server.crtserver.key的路径是MediaMTX能读取到的(可以用绝对路径),且文件是有效的自签证书或正规证书。如果TLS没正确开启,RTSPS服务不会启动,ffmpeg自然连不上。

  • 给ffmpeg添加TLS兼容参数(如果必须保留推流逻辑)
    如果你因为特殊需求必须用ffmpeg推RTSPS流,那需要给ffmpeg加上TLS相关参数,尤其是使用自签证书的场景。比如添加-tls_verify 0跳过证书验证(仅测试用,生产环境建议配置信任证书),或者指定证书文件:

    ffmpeg -i rtsp://user:password@192.168.68.142:554 -c:v copy -c:a copy -f rtsp -tls_verify 0 rtsps://localhost:8322/cam1
    

    另外,也可以加上-rtsp_transport tcp强制使用TCP传输,避免UDP在加密时的潜在问题。

  • 检查端口占用和防火墙设置
    netstat -ano | findstr :8322(Windows)或lsof -i :8322(Linux/macOS)确认8322端口没有被其他程序占用,同时确保本地防火墙没有阻止MediaMTX监听该端口,或是ffmpeg向该端口发起连接。

备注:内容来源于stack exchange,提问作者cmd

火山引擎 最新活动