协议选型

流媒体协议选择指南:RTMP、RTSP、WebRTC、SRT 与 GB28181 怎么选

面向私有化音视频项目,对比 RTMP、RTSP、HTTP-FLV、HLS、WebRTC、SRT 与 GB28181 的适用场景、浏览器播放方式、延迟、部署成本和选型建议。

为什么协议选型会影响项目成败

私有化视频项目里,协议不是单纯的技术细节。协议决定摄像头能否接入、浏览器能否播放、端到端延迟能否接受、现场端口是否容易开放、国标平台能否级联,以及现场排障时能否快速定位问题。

很多项目一开始只问“支持不支持 RTSP 或 GB28181”,真正部署时才发现还要考虑浏览器播放、录像回放、网络隔离、NAT、防火墙、SRT 回传、移动端播放和业务系统接口。更稳妥的做法是先按链路拆开:输入源用什么协议、本地网关如何管理、输出给谁、用户在哪里观看、是否需要录像和回放。

常见协议的工程定位

协议更常见的位置典型用途主要注意点
RTSP摄像头 / NVR 输入局域网摄像头取流、低延迟预览浏览器不能直接播放,通常需要网关转换或分发
ONVIF设备发现与控制搜索设备、获取 RTSP 地址、云台(PTZ)、设备信息ONVIF 不是播放协议,实际媒体通常仍走 RTSP
RTMP推流或服务端输入编码器、桌面软件、老直播链路浏览器原生支持弱,常作为上游输入或中间协议
HTTP-FLV / WS-FLV浏览器播放输出内网 Web 预览、低延迟播放需要浏览器播放器和网关分发
HLS浏览器/移动端播放输出兼容性优先、延迟要求不高的观看延迟通常更高,适合回看或低实时要求
WebRTC浏览器低延迟播放低延迟预览、指挥大屏、互动类链路对网络、证书、端口和浏览器环境更敏感
SRT跨网回传 / 传输弱网、远程点位、编码器回传需要两端都支持 SRT,并确认端口与模式
GB28181国标联网上下级平台、目录、注册、INVITE、级联信令和媒体会话复杂,需要真实平台互通验证

摄像头接入优先看 RTSP、ONVIF 和 GB28181

安防摄像头和 NVR 最常见的是 RTSP 取流。ONVIF 负责发现设备、读取 Profile、拿到 RTSP 地址和做部分控制;它解决的是设备管理问题,不替代媒体播放链路。

如果项目对接公安、园区、行业平台或已有国标系统,就需要 GB28181。GB28181 不只是一个播放地址,它包含注册、保活、目录、控制、INVITE 调看和 PS/RTP 媒体发送等完整流程。选型时要确认角色是“下级设备/平台接入上级平台”,还是“作为上级平台接入下级设备”,两者工作量和验证方式不同。

浏览器播放优先看 WebRTC、HTTP-FLV、HLS

浏览器不能直接播放普通 RTSP 摄像头流。实际项目通常让网关先接入 RTSP / ONVIF / GB28181,再输出浏览器可播放的地址。

如果项目重视低延迟预览,可以优先看 WebRTC 或 HTTP-FLV / WS-FLV。如果项目更重兼容性、录像回看或跨端播放,可以使用 HLS。这里没有绝对最优协议,只有更适合的观看场景。

StreamCore SDK 和 StreamGate 的协议分工

StreamCore SDK 适合嵌入客户自己的软件,例如桌面客户端、移动端 App、服务端程序或专用设备软件。它关注的是 API、会话、回调、解码、渲染、推流和 GB28181 设备侧能力。

StreamGate 适合部署为现场网关。它关注的是设备接入、通道管理、浏览器播放、录像检索回放、开放接口、国标上联和运维诊断。项目里如果需要“装上就能管理一批摄像头”,优先评估 StreamGate;如果需要“把能力集成进自己的程序”,优先评估 StreamCore SDK。

选型建议

  1. 现场摄像头接入:优先确认 RTSP、ONVIF、GB28181。
  2. 浏览器观看:确认 WebRTC、HTTP-FLV、HLS 的延迟和兼容性。
  3. 远程回传:确认 SRT 或已有 RTMP / RTSP 输入链路。
  4. 国标项目:先明确上下级角色、目录规模、INVITE 媒体方向和真实平台。
  5. 商用授权:把协议能力、平台、通道数、部署机器和维护周期一起确认,避免只按单个协议报价。

选型落地检查

在真实项目里,协议选型不要只看单个名词,而要把输入、管理、输出、观看和录像回放连成一条完整链路。摄像头侧通常优先确认 RTSP、ONVIF 和 GB28181;浏览器观看侧确认 WebRTC、HTTP-FLV、HLS 或 WS-FLV;跨公网或弱网回传再评估 SRT。这样可以避免“设备接得进来,但业务端看不了”或“浏览器能看,但现场无法级联”的情况。

如果项目同时包含摄像头接入和软件集成,可将网关和 SDK 分开评估。StreamGate 更适合部署在现场服务器上统一接入、录像、浏览器播放和接口对接;StreamCore SDK 更适合嵌入桌面端、服务端或移动端软件,直接提供播放、采集、推流和国标注册等能力。两者可以独立使用,也可以在同一项目里分别承担现场接入和客户端能力层。