RTSP
约 1405 字大约 5 分钟
2026-03-29
RTSP 这一节最重要的,不是背命令,而是先搞清楚它在整个实时音视频体系中的定位:它是设备侧和安防生态里非常常见的流媒体控制协议,但它并不是浏览器原生支持的播放协议。
RTSP 是什么
RTSP 全称是 Real Time Streaming Protocol,也就是实时流媒体协议。它最常见的应用场景是:
- 网络摄像头
- NVR / DVR
- 安防监控系统
- 专业流媒体设备
RTSP 本身主要负责的是“控制会话”,比如:
- 请求播放
- 暂停
- 停止
- 定位
- 建立和管理媒体会话
它通常不会自己承载实际的音视频数据。真正的数据传输往往由下面两个协议负责:
- RTP:负责传输音视频数据
- RTCP:负责质量反馈、时钟同步和统计信息
可以把这三者的关系理解成:
RTSP:负责控制
RTP:负责传数据
RTCP:负责反馈和控制质量一个 RTSP 地址长什么样
RTSP 地址通常长这样:
rtsp://admin:123456@192.168.1.100:554/stream1这里面通常会包含:
- 协议头:
rtsp:// - 用户名和密码
- 设备 IP
- 端口,默认常见是
554 - 具体流路径
安防摄像头、网络录像机给出的实时视频地址,很多时候本质上就是这样一条 RTSP 地址。
浏览器为什么不支持 RTSP
这是这节的核心问题。
绝大多数浏览器都不能直接播放 RTSP,原因主要有几层:
协议模型不一致
Web 世界的核心模型长期围绕 HTTP / HTTPS 展开,而 RTSP 是一套独立的流媒体控制协议,它的会话管理方式和浏览器的安全模型并不是天然契合的。
传输层差异
RTSP 背后的媒体数据通常依赖 RTP 传输,而 RTP 常见场景下更偏向 UDP。
浏览器对 UDP 的能力非常克制,直到 WebRTC 这类标准出现之后,才以安全约束更强的方式把 UDP 能力引入浏览器世界。
安全模型差异
浏览器运行在严格的 Web 安全模型下,直接让网页随意去访问内网摄像头和 RTSP 设备,会带来很大的安全和权限问题。
历史路径依赖
RTSP 诞生和繁荣的时候,浏览器并不是监控系统的主要入口。早期安防系统更多依赖专用客户端和封闭平台,因此整个生态都围绕 RTSP 长起来了。
既然浏览器不支持,为什么 RTSP 还这么常见
因为它在设备侧太成熟了。
它的优势主要在于:
- 行业生态成熟
- 摄像头和录像设备支持广泛
- 配合 RTP/RTCP 适合实时流传输
- 安防、监控、录像体系大量围绕它构建
所以今天的问题不是“RTSP 该不该存在”,而是“如何把 RTSP 流桥接到浏览器里播放”。
浏览器里常见的 RTSP 处理思路
| 方案 | 思路 | 优点 | 局限 |
|---|---|---|---|
| 浏览器插件 | 依赖 ActiveX / NPAPI 等插件直接播放 | 过去实现简单 | 现代浏览器基本淘汰 |
| 前端自行解码 | 浏览器收 RTP / H264 数据,再用 WASM 解码 | 技术演示空间大 | 实现复杂、性能压力大 |
| 服务端转协议 / 转封装 | 服务器先拉 RTSP,再转成浏览器支持的格式 | 最实用、最常见 | 需要额外的中间层 |
实际项目里最常见的还是第三种:服务端中转。
RTSP 到浏览器的桥接思路
思路通常是:
摄像头 / NVR 输出 RTSP
-> 中间流媒体服务器拉取 RTSP
-> 转成浏览器可播放的 HLS / WebRTC / HTTP-FLV
-> 浏览器播放常见输出方向:
- HLS:兼容性好,但延迟偏高
- WebRTC:延迟低,适合交互式或低延迟监控
- HTTP-FLV:曾经常见,现在多见于特定方案
MediaMTX 是什么
在 RTSP 场景里,经常会遇到一个工具:MediaMTX。
你可以把它理解成一个流媒体协议网关,它的职责不是“发明新协议”,而是:
- 接收设备推过来的流
- 接入 RTSP / RTMP / WebRTC / HLS 等多种协议
- 再按需要把流转成别的协议对外输出
所以它很适合做下面这种桥接:
摄像头(RTSP)
-> MediaMTX
-> 浏览器(HLS / WebRTC)它解决的不是浏览器原生支持问题,而是“把设备世界和浏览器世界接起来”。
RTSP 更适合放在哪一层理解
如果把整个链路拆开看:
- 设备侧:摄像头、NVR、编码盒子
- 协议中间层:RTSP / RTP / RTCP
- 浏览器侧:MSE、HLS、WebRTC、
video
那么 RTSP 更偏向前两层,也就是:
- 设备如何暴露实时流
- 服务端如何接收和控制这个流
它不属于浏览器原生播放协议这一侧。
RTSP 在浏览器场景里的结论
可以先记住这几句:
- RTSP 很重要,但它不是浏览器播放协议
- RTSP 负责控制,RTP 负责传输媒体,RTCP 负责反馈
- 浏览器如果要看 RTSP,通常必须经过中间层转协议
- 真正面向浏览器时,最终更常落到 HLS、WebRTC 这类格式或协议上
所以在前端视角里,理解 RTSP 的关键不是“怎么直接播它”,而是“它在设备和中间服务器这一层到底扮演什么角色”。
