GB/T28181是一个标准的视频监控协议,用来解决视频监控联网的应用需求。但是随着视频应用的普及,GB/T28181已经不再局限于视频监控领域的应用。特别是在各种视频融合的项目中,国标GB/T28181的应用越来越普及。
在很多开发项目中,特别是涉及到流媒体的处理上,我们需要搞清楚视频是推流还是拉流,理解这一概念后我们就可以有针对性的设计网络结构,如何使用相关的视频流。在GB/T28181应用过程中,很多时候搞不清是拉流还是推流。
首先我们需要了解一下,什么是拉流?什么是推流?
什么是拉流?什么是推流?
在流媒体技术中,拉流和推流是两个常用的概念,用于描述媒体数据在服务器和客户端之间的传输方式。
推流 (Pushing Stream)
推流推流是指将视频或音频数据从一个设备(通常是编码器、摄像头或软件)主动推送到服务器。这种方式主要用于内容发布者向媒体服务器发送实时流媒体数据,然后服务器再将数据分发给观众。常见的应用场景是直播平台中的主播推流,比如主播通过推流将视频内容传送到直播平台。
我们常见的视频直播大多数都是推流方式,这种方式使用最广泛的协议就是RTMP协议。在使用过程中,我们需要知道RTMP的推流地址。然后配置推流设备把视频流推送到这个地址上,就可以把视频推送到对应的服务器上。
比如思载科技的视频接入网关上支持RTMP推流的。但是在使用之前需要创建一个推流地址。把这个地址配置到支持RTMP的无人机,摄像头,OBS推流软件内,只要网络是通的,就可以在视频网关上查看推流上来的视频画面了。
这种方式取决于终端,终端可以决定何时推,以及推送视频的格式,帧率,码率,分辨率等信息。当需要停止时都在终端层面进行操作。
拉流 (Pulling Stream)
拉流是指客户端(观众的播放器)从服务器主动拉取视频流。这种方式通常在用户观看直播或视频点播时使用,客户端会请求服务器获取数据流进行播放。
最常见的方式就是我们在视频网站上看视频,都是我们选择好要看的视频节目,给服务器发送一个请求,然后从服务器上拉取相应的视频,在播放器进行播放。
这种拉流的常见协议有FLV,HLS等视频播放协议,主要用于视频播放和观看。
GB/T28181是拉流还是推流?
GB/T28181是一种视频监控联网协议,那么对应监控摄像头来讲,GB/T28181是拉流还是推流呢?我们从摄像头目前的视频输出方式来看。
目前摄像头可以提供直接的RTSP流地址,每个摄像头都有一个RTSP流地址。我们在播放器上只需要输入正确的RTSP流地址,就可以看到摄像头的画面。这时摄像头相当于一个流媒体服务器。我们的播放器相当于一个客户端。这时一种典型的拉流方式。摄像头无需主动做出操作,根据要求,输出视频流到播放器。
那么GB/T28181与RTSP方式不同,用户的播放器无法直接去摄像头拉取视频流。国标GB/T28181的使用条件必须有一个国标服务器或者国标网关,摄像头需要注册到国标平台上,然后再输出其它视频流供播放器使用。
比如思载科技的视频接入网关就是一个综合能力的国标服务器平台,当有各种流播放的需求时,用户只需要请求服务器即可。那么对于GB/T28181的摄像头是推流还是拉流呢?
实际上,这种操作方式一样的拉流。我们虽然可以看到国标平台上的摄像头状态,但是此时并没有视频流的操作。这就是国标GB/T28181基于SIP的注册机制的特性。与RTMP的平台的推流不同,我们在使用一些RTMP推流系统时,只要客户端有推流,即便没有调看视频,推流也是在进行的。
但是GB/T28181的平台,我们虽然发现视频显示在线状态,但是此时没有调看动作时,实际上并没有视频流的交互,只在我们打开播放器,打开这个视频监控画面时,才会有视频接入到服务器。这就是一种典型的拉流应用,也就是说,当我们需要看视频时,通过服务器向摄像头发出拉流指令,才会把摄像头的视频流出,在服务器段呈现。
综上所述,目前针对摄像头的GB/T28181流媒体协议是一种拉流方式。这种拉流方式的优势就是由服务器控制,只在拉流时产生视频数据,平时只有状态信息,方便在项目中对视频进行管理和调用,也是目前视频融合项目中主要的流媒体处理方式。