最近关注GB28181的朋友很多,昨天有位朋友问到GB28181出内网的问题,希望我花5分钟的时间
讲讲如何通过GB28181协议将内网的摄像机视频推送到公网。要说清楚这个问题,5分钟的时间应该不
够,还是写篇文章跟大家分享下。
说这个问题之前,我想先聊聊GB28181协议,首先我们需要了解的是GB28181是应用层协议,而
不是传输层协议。所谓应用层协议说简单点就是发送方跟接收方商议怎么协作:比如第一个信令由谁
发起,视频流的采用什么封装格式,什么时候开始推送视频,什么时候结束推送等等。GB28181协议
规定下级(也可以理解为客户端)首先向上级(服务端)注册,这一点让内网摄像机设备通过GB281
81协议主动推送视频到公网有了可能性。局域网的摄像机设备只有内网IP,公网下的服务无法主动找
到摄像机设备,然公网下的服务有公网IP,内网中的摄像机通过路由转换最终可以将注册信息发送给公
网下的服务(这一点rtsp协议是做不到的,rtsp协议规定首先得服务端向客户端发送命令,所以内网摄
像机设备通过rtsp协议主动推送视频到公网是行不通,通过在内网部署流媒体服务主动推送视频流到公
网可行,代价是增加一台服务器)。
客户端设备已经注册上来了,接下来服务端要做的事情是查询设备信息以及发起视频流请求命令。
客户端设备跟服务端在同一个局域网时,服务端发送的查询及请求命令的目的地址直接填写客户端设备
的IP及Port即可;客户端设备在内网服务端在公网时服务端发送命令的目的地址该填什么呢?直接填客
户端设备的内网IP及Port?显然不正确,身在公网的服务根本不知道客户端设备内网IP + Port家住何方,
哪一条路可以抵达。服务端要想将命令成功发送给客户端设备必须得找到合适的路径(路由路径)。
合适在路径在哪,摄像机设备注册到服务端会产生一条从内网设备到公网服务的路径,服务端沿着这
条路径下发命令即可将命令发送给内网客户端设备。服务端并不用关心这条路径的所有节点,只要将
目的地址的IP及Port设置为设备注册上来时公网测的IP及Port即可。
如需交流,可以加QQ群766718184,或者QQ:350197870
博主提供Ffmpeg、GB28181视频教程
播放地址: http://www.iqiyi.com/u/1426749687
源码及Demo下载地址:http://www.chungen90.com/index.php?m=text&a=index&classify_id=207
视频下载地址: http://www.chungen90.com/index.php?m=text&a=index&classify_id=208