远程监控网络摄像头通用指南
本文罗列了接入网络摄像头的四种技术方案,也是最常用的四种方案。大家根据自身项目的实际需求,选择适合的接入方案。最后,这四种技术方案的总结如下图所示,希望对你有所帮助。SDKRTSPGB28181ONVIF接入难度简单简单复杂一般时延低低中低优点简单易用最方便支持复杂业务集中管理缺点太重,必须有端口映射功能单一,不支持PTZ有时延,开发复杂需要端到端可通讯应用场景局域网内或摄像头数量较少只想实时看流
一、引言
随着物联网技术的发展,越来越多的场景需要我们通过技术手段去感知。画面和声音相当于机器的眼睛和耳朵,有了这些实时数据我们可以做很多事情,比如车牌识别、人脸识别、体温识别等等。本文将全方位介绍网络摄像头如何接入软件的实现,这个软件可以是Android、iOS上的APP,电脑客户端,也可以是Web或者后台软件。
二、接入方式
摄像头的接入方式有很多,根据不同的业务需求选择不同的接入方式。
2.1 SDK 接入
直接连接摄像头接入是最方便快捷的,但这也依赖于所购买摄像头厂家的支持。但海康和大华这种比较大的厂家都是有提供开发的SDK的,在PC客户端和Android、iOS的SDK中,甚至帮你做好了播放器。只需要直接引入即可使用,非常方便。但这里有个坑需要注意一下,有可能摄像头的SDK并不在官网开放下载,如果找不到最好问一下客服。
我第一次接海康摄像头就是因为没找到SDK,直接从rtsp流进行的,又是编译播放器又是调延迟的。结果在GitHub上发现有巴西的哥们上传了一个海康SDK的应用,我一看比我调了一周的延迟还要低。还以为是只针对国外开放,后来问客服才知道只有报备才给SDK……
SDK 接入这种方式虽然非常快捷方便,但它也有弊端,就是如果想外网使用必须给摄像头代理一个外网可用的端口。
比如上图,虽然摄像头的默认端口是这些,但我们可以将摄像头ip的8000
映射到具有外网ip的9123
端口上去。这样我们具备摄像头SDK的应用程序,就可以直接写这个外网的ip端口就可以访问使用。
如图所示,SDK 开发可以说是最方便最快捷的方式了。并且因为厂家的SDK还是自己的摄像头,所以在延迟方面优化的很好。
2.2 RTSP 接入
第一次接触 RTSP 协议的朋友可能有点陌生,这里稍微解释一下相关概念,以免一下子被太多名词冲昏头脑。
RTSP 和 HTTP 一样,属于应用层的协议,是一种流媒体协议。RTSP 基于 RTP数据协议、RTCP控制协议一起使用。RTP 通常工作于UDP之上,用于传输实际的流媒体数据。RTCP 同样通常工作于 UDP 之上,用于对 RTP 进行控制,流媒体数据的收发端在传输过程中相互发送 RTCP 数据包,将自己这一端检测到的 QoS 等信息传递给对方,使用 RTP/RTCP 协议的应用程序,利用这些信息对收发过程进行控制。RTP 和 RTCP 在传输过程中,工作于不同的端口上。简单来说就是 RTSP 先开始数据的交互,建立媒体传输会话,然后开始通过 RTP/RTCP 传输数据。
这个时候,你可能还会看到 RTMP 和 HLS 这两种流媒体协议。RTMP协议是Adobe的私有协议,未完全公开,苹果原生不支持。苹果自己出了个 HLS 协议,跨平台可以用。
通常我们会选择 RTSP 流地址来接入软件,每家摄像头的 RTSP 地址都有自己的规范,我这里还是以海康威视为例介绍。
rtsp://用户名:密码@ip:端口/h264/ch1/main/av_stream
海康摄像头的 RTSP 流地址拼接如上所示,我们只需要将摄像头相关信息填入即可播放。比如我摄像头的ip是10.0.5.135
,账号密码:admin/bitetao
。那我 RTSP 的流地址如下所示:
rtsp://admin:bitetao.@10.0.5.135:554/h264/ch1/main/av_stream
这里需要注意的是,上面的这个格式只适用于2012年后的摄像头规范,具体根据规范根据摄像头型号带入。并且后面参数,比如编码格式h264
、通道ch1
、主码流及子码流main
。这些参数都是可调的,根据需要调整即可。RTSP 协议在 Windows 中可以用 Potpayer 播放器测试。
2.3 GB28181 接入
GB28181协议是视频监控领域的国家标准,该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求。GB28181协议信令层面使用的是SIP(Session Initiation Protocol)协议,流媒体传输层面使用的是实时传输协议(Real-time Transport Protocol,RTP)协议,因此可以理解为GB28181是在国际通用标准的基础之上进行了私有化定制以满足视频监控联网系统互联传输的标准化需求。
该协议只支持下级找上级,使用流程是在摄像头端配置,然后摄像头会主动的接入到软件中去。如果想实现上级找下级,也就是软件想主动配置摄像头后再接入,可以参考下一小节
ONVIF 接入。
国内本土的摄像头生成商都会遵循 GB28181 协议,根据该协议可以批量的将大量摄像头接入平台,实现实时监控及控制。
上图为通过 GB28181 协议实时音视频播放的流程图,单纯的介绍概念可能有点生涩。本文以开源项目:wvp-GB28181-pro 为例,介绍该协议在实际项目中使用的流程。WVP 通过28181协议将IPC摄像头接入平台,基于 ZLM 流媒体服务器作为视频流的中转。可以观看也可以使用28181/rtsp/rtmp/flv等协议将视频流分发到其他平台。
具体的接入方式这两个开源项目的文档已经写得非常详细了,只需要根据文档把 SIP 相关的信息填写正确就可以了。简要流程就是,先配置好 SIP服务器,这里用的是 WVP。然后在摄像头的配置中配好 SIP 服务器定义好的参数,一一对应。
至于流媒体中转平台,这里用的 ZLM 。只需要Docker启动,配好端口和 mediaServerId 即可,这两个配置也要和 WVP 中的配置一一对应。最后启动前端即可看到实时画面:
2.4 ONVIF 接入
GB28181 是国内标准,而 ONVIF 则是国际标准,ONVIF创建了一个视频监控和其他物理安全领域的IP产品如何进行相互通信的标准。是由Axis Communications,博世安防系统和索尼于2008年创立的。现在我们大多数摄像头也都支持这个协议,但默认一般不开启,需要额外配置。
添加一个用户名及密码,就可以通过这个协议访问摄像头了。比如我们可以下载通用的流媒体服务器软件:EasyNVR,来测试是否可用。ONVIF 协议的使用流程是上级主动向下级通讯,这是和 GB28181 协议不同的地方。
三、总结
本文罗列了接入网络摄像头的四种技术方案,也是最常用的四种方案。大家根据自身项目的实际需求,选择适合的接入方案。最后,这四种技术方案的总结如下图所示,希望对你有所帮助。
SDK | RTSP | GB28181 | ONVIF | |
---|---|---|---|---|
接入难度 | 简单 | 简单 | 复杂 | 一般 |
时延 | 低 | 低 | 中 | 低 |
优点 | 简单易用 | 最方便 | 支持复杂业务 | 集中管理 |
缺点 | 太重,必须有端口映射 | 功能单一,不支持PTZ | 有时延,开发复杂 | 需要端到端可通讯 |
应用场景 | 局域网内或摄像头数量较少 | 只想实时看流不需要其余功能 | 大量摄像头集中管理 | 智能家居或NAS相关场景 |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)