news 2026/9/14 12:33:51

只有 HTTP 通道可用时,mediamtx 如何用 RTSP over HTTP 隧道读取外部 RTSP 流?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
只有 HTTP 通道可用时,mediamtx 如何用 RTSP over HTTP 隧道读取外部 RTSP 流?

只有 HTTP 通道可用时,mediamtx 如何用 RTSP over HTTP 隧道读取外部 RTSP 流?

【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx

当外部 RTSP 服务器或摄像头部署在强制的 API 网关或严格防火墙之后、只有 HTTP 协议被放行时,普通的rtsp://直连拉流会失败。MediaMTX 支持把 RTSP 封装进 HTTP 隧道(即 RTSP over HTTP tunneling)来解决这个问题:在mediamtx.yml中把拉流源的 scheme 改成rtsp+http,MediaMTX 就会通过隧道从外部 RTSP 服务器读取流,并把结果流发布到本地路径上,供其他客户端用常规的 RTSP 地址消费。

隧道方案的选择依据

RTSP-specific features 中说明了标准 HTTP 隧道有两个变体,选型依据是网关/防火墙的能力:

  • RTSP over WebSocketrtsp+ws/rtsps+ws):效率更高,但要求网关或防火墙支持 WebSocket;
  • RTSP over HTTPrtsp+http/rtsps+http):较老的变体,在极端情况下也能工作。

+ws与不带+ws的差异在于隧道方式,rtsps前缀则表示外部源本身是加密 RTSP(RTSPS)。带+http/+ws的四种 scheme 在 mediamtx.yml 的pathDefaults注释中都有列出,格式均为scheme://user:pass@host:port/path。如果网关只放行最普通的 HTTP 流量,就用rtsp+http(加密源用rtsps+http)。

另外,MediaMTX 对入站的 HTTP 隧道 RTSP 连接是自动处理的,不需要任何配置;本文讨论的是出站拉流,也就是"读取外部 RTSP 流"这一方向,只需配置source

配置拉流路径

编辑mediamtx.yml,在paths段下添加一个路径,把source设为带隧道 scheme 的 URL(这是 RTSP cameras and servers 中拉流配置方式在隧道场景下的对应写法):

paths: proxied: # standard-rtsp-url 换成外部 RTSP 服务器的实际地址, # 即 user:pass@host:port/path 的形式 source: rtsp+http://user:pass@host:port/path

几个需要注意的点:

  • proxied是路径名,可以任意取;配置后,拉到的流会出现在本机的rtsp://localhost:8554/proxied上。
  • 如果用户名或密码中含有?:等特殊字符,需要先做 URL 编码再填入 URL。
  • 使用rtsps+http(外部源为 RTSPS)且其 TLS 证书是自签名或无效证书时,可以用sourceFingerprint提供证书指纹来放行校验,获取方式见 RTSP cameras and servers 文档中的openssl命令。
  • 若希望只在有读者连接时才去拉源、节省带宽,可加sourceOnDemand: yes,并配合sourceOnDemandStartTimeout(无读者超时后关断源)使用;默认值是false,即持续拉流。

修改mediamtx.yml后,可以重启 MediaMTX 进程,或利用其配置热加载功能让新配置生效(参见 Install 中提到的 hot-reloading 功能)。

验证拉流结果

流拉取成功后,它会像普通路径一样可通过本机 RTSP 端口读取。用 RTSP 客户端 访问即可,例如 FFmpeg:

ffmpeg -rtsp_transport tcp -i rtsp://localhost:8554/proxied -c copy output.mp4

也可以用 Control API 确认路径状态:先在mediamtx.yml中启用api: yes,然后查询当前活动的路径列表(见 Control API):

curl http://127.0.0.1:9997/v3/paths/list

注意 Control API 默认仅允许 localhost 访问。

边界与限制

  • 四种隧道 scheme(rtsp+httprtsps+httprtsp+wsrtsps+ws)覆盖明文/加密源 × HTTP/WebSocket 隧道的组合;如果选了rtsp+ws但网关不支持 WebSocket,拉流会失败,此时应退回rtsp+http变体。
  • 文档未对 HTTP 隧道拉流的额外性能开销给出量化说明;只说明 WebSocket 变体"more efficient",选型以网关能力为准。
  • 拉流路径支持的视频/音频编解码范围与普通 RTSP 拉流一致,见 RTSP cameras and servers 顶部的编解码表。

更多 RTSP 传输协议与加密的细节,见 RTSP-specific features。

【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 12:33:00

人机交互实验的具身智能数据采集平台选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 12:32:07

SpringBoot+Vue实现乡村垃圾运输智能管理系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 12:28:49

Unity开发实战记录:从UI细节到数字孪生的踩坑与解法

做Unity开发这几年,我最大的感受是:真正折磨人的从来不是引擎里那些花哨功能,而是一个个具体到发指的细节。按钮点击区域差几像素、WebGL存档写不进去、PLC读回来的温度值是个天文数字、Pico上MR切VR画面闪一下——这些问题单独看都不大&…

作者头像 李华
网站建设 2026/9/14 12:28:18

MCU芯片级功能安全机制:ECC与锁步核的工程化整合

1. SafetyPack不是个软件包,而是MCU芯片级安全机制的系统化封装概念你搜“SafetyPack”时,大概率会一头雾水——GitHub上没有叫这个名字的知名开源库,主流芯片厂商的SDK里也找不到独立的SafetyPack安装包。这不是一个能pip install或make men…

作者头像 李华