国标的由来
GB28181国标解决平台与平台对接问题
比如A平台大连交警系统需要看B平台上海交警系统的视频。需要对接过来,实现调度视频。这时候需要知道他们取流的协议,各家厂商都自定义了一套协议,就很麻烦,因此国家就制定了GB28181国标实现A和B平台的相互取流,是一个应用层协议。由国内各大厂商,研究院制定的标准。
通信流程图
基于SIP信令流程图
如下图
信令交互成功后,摄像机(媒体流发送者)推送流到媒体服务器,媒体服务器在指定的端口接收到视频流后,转发给流媒体接受者(比如某台PC的某个空闲端口)
- SPI服务器和媒体服务器可以是同一个设备
- 媒体流接受者:摄像头推送给媒体服务器,媒体服务器在退给其他媒体设备接收者,媒体服务器相当于分发,中转(也可以直接推给媒体流接受者)然后提供RTSP、RTMP、FLV、HLS多种格式进行分发,实现Web浏览器、手机浏览器、微信、PC客户端等各终端无插件播放
平台的上级、下级(平级一般不使用)
A平台想从B平台取流,A平台就是上级,B平台就是下级。视频流从下级推到上级。
推模式与拉模式
拉模式
前端是一个IP Camera -> (RTSP) - media server。server这里发生请求,这样IPC会推给你,没有请求IPC停止推送。
推模式
media server A; media server B
- A从B要取流,会告诉B我要从哪个port来取流,B知道了,根据A想要视频流的IP,port,将视频流推给对应的端口。
- A给B发个bye,我不要了,就结束了消息的传送。
- A没有发B的BYE,比如A就已经关了,突然断了,那么B就会一直发视频流,除非你把B平台停止了。
- SIP信令只注册一回。
监控领域涉及到的业务
- 取设备信息(大连平台需要知道上海平台挂的1千 2万个设备(如ID))。
- 取实时流(A从B平台取正在直播的视频流取过来)。
- 录像回放(A从B平台NVR以前录过的视频流)。
- 设备控制:云台控制,语音对讲。(怎么取音频,视频格式国标里都是有详细的介绍)。
GB28181的优缺点
优点
- 协议统一方便平台间通信
- 因为GB28181是推的模式,可以实现视频流出外网,比如海康的(萤石云)
缺点
国标相对简陋(只定义了一些基本的通信字段),有很多异常通信并没有处理掉。
举例如下:录像回放业务:
- A从B平台取昨天录像回放,而B平台昨天的录像回放没有了。
这样的话A平台就得主动去问B,你会给我什么,这样的去协商,因为国标里没有定义,B是资源的提供方,B有可能就不想给你。A派个研发过去取流,而B平台是一个维护人员只能给你一个port,他给不了你其他的信息。这就导致了平台对接中的各种麻烦,不知道就的去猜。 - A平台给B平台发条请求,获取录像的信息比如一天或者一个小时。这其中你 查多久,这个允许的范围国标里是没有的,查询多长时间返回也没有规定。
- 平台对接:B是综合平台,经过多级流媒体服务才能拿到录像时间段视频流。消息推送比较慢,A需要几秒才能收到返回
目前来说:大厂家做的比较早,小厂家都是去适应大厂家
移植
- 控制协议:基于国际的SIP协议和XML协议,相关开源库:libosip, libeXosip, mxml, md5
- 流媒体:采用PS流的RTP封装,简易流程:H264 -> PS -> RTP -> SIP服务器