之前的《云、边、端方案中视频设备直接上云的两种协议选择》中,我们分别描述了RTMP协议和国标GB28181协议在各种场景中的应用方法,在视频“云、边、端”的大框架中,我们极力推荐同时采用RTMP和国标GB28181协议,因为RTMP效果好,GB28181通用、可控。
RTMP协议本身就是一种直播协议,从设备端的角度来说,可以不受控制,不间断地往平台上推流或者重连推流,不影响摄像机本身的其他业务,而GB/T28181协议是一种按需协议,就是流媒体过程会有启/停,那么,这样两种协议,本身是可以共存的。
平台如果能够同时支持RTMP协议和GB28181协议,那么,对于RTMP直播,平台可以通过阀门开关的形式,开启/关闭推流通道,来控制推流直播,这样既能做到按需直播(有人看才跑流量),又能做到较好的直播效果;同时,平台支持GB28181协议,在平台侧,设备可控、可配置,而且能够多一种视频传输通道,达到双保障的目的。
那么,如何在技术上建立这样一款既能支持RTMP推流进来,又能够支持GB28181设备接入的平台呢,我们大概分析了一下:
基础的还是需要一款RTMP流媒体服务:能够将推流来的RTMP流转化成为全平台以及各种行业场景需要的RTSP、RTMP、HTTP-FLV、HLS(m3u8)、WebSocket流,这是整个流媒体服务的核心部分,我们称为:EasyCVR-RTMPServer-Module。
同时,我们需要接入GB28181设备以及解析各种设备和客户端的指令,我们称之为:EasyCVR-GBSIP-Module。另外,我们在接收到设备传输来的RTP流媒体数据时,我们还需要对数据进行转化,将PS数据转为ES再推送到EasyCVR-RTMPServer-Module做多终端的输出,我们称之为:EasyCVR-GBRTP-Module,整个流程大概为:
我们设计EasyCVR的初衷,就是为了建立一个大而全的流媒体平台,能够将RTMP、GB28181、RTSP、Onvif、SDK,都能融合进来,这样就能够一套系统,满足各种各样的应用场景,融合多种类型的设备,那么单对于这里描述的RTMP + GB28181的功能,在EasyCVR系统中,就相当于两条完全独立的管理通道,再通过上层逻辑加以串联,就能做到非常好的直播与控制的相关。
后续我们将逐步对EasyCVR的技术特点进行介绍,包括如何设计RTMPModule、SIPModule、RTPModule之间的组合与复用,达到多种协议接入、统一输出的目标。