张 萍,胡应坤
(广东工贸职业技术学院 计算机与信息工程系,广东 广州 510510)
视频数据相对于其他数据更加直观,在物联网方案中加入视频,能为用户提供更丰富的信息和更好的体验。OneNET是由中国移动打造的物联网开放平台。平台支持MQTT、EDP、MOBUS等十多种主流的物联网协议,支持传感器采集数据、图片和视频数据的上传及使用,帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。本文详细分析了OneNET视频通信流程及通信协议,设计了应用服务程序,提出了一种基于OneNET云平台构建视频应用的方案。
本设计中视频设备采用市场上成熟的网络摄像头产品,产品需支持 ONVIF、RTSP、RTP、RTCP、SDP等协议。网络摄像头完成音视频数据采集、编码,使用ONVIF协议和应用服务程序通信,确定网络视频的接口、数据类型以及数据交互的模式,将音视频数据传送给应用服务程序。应用服务程序负责在云平台注册设备、创建视频通道,并使用RTMP协议将接收到的音视频数据上传至云平台。播放设备可以是安装了流媒体播放器的PC、手机、平板电脑等,通过RTMP/HLS协议获取音视频数据进行播放。基于OneNET云平台的视频应用系统框架如图1所示。
图1 基于OneNET云平台的视频应用
如图2所示为基于OneNET云平台的视频应用通信流程。具体如下:
图2 基于OneNET云平台的视频应用通信流程
(1)应用服务程序(ONVIF客户端)读取配置文件,获得视频设备IP,并连接视频设备(ONVIF服务器)。ONVIF规范规定设备管理和控制部分所定义的接口均以Web Services形式提供,作为服务提供者的设备为服务端。每一个支持ONVIF规范的终端设备均须提供与功能相对应的Web Services程序。服务端与客户端的数据交互采用SOAP协议。ONVIF中的其他部分,比如音视频流,则通过RTP/RTSP协议进行交互。客户端根据WSDL描述文档,会生成一个SOAP请求消息,该请求会被嵌入在一个HTTP POST请求中,发送到Web Services所在的Web服务器。Web Services请求处理器解析收到的SOAP请求,调用相应的Web Services,再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把信息送回到客户端。
以应用服务程序获取视频能力为例,进行如下说明:
①应用服务程序向视频设备发送HTTP POST请求,POST的内容是WSDL描述文件,获取设备Analytics、Device、Event、Imaging、Media、PTZ 等方面的能力。WSDL描述文件内容如下:
从上述内容可以看出,此设备支持Analytics、Imaging、Media、PTZ,且视频传输的方式是RTP_RTSP_TCP方式。
(2)应用服务程序以RTSP协议与视频设备交互,完成认证、获取音视频流信息,比如音视频编码格式信息等步骤,视频设备按照RTP协议封装音视频数据。为保证画质,传输层协议使用TCP,而不是UDP。下面给出了视频设备反馈的SDP内容:
(3)应用服务程序以UDP方式与OneNET引导机(183.230.40.42:9101)通信,获得OneNET命令处理服务器地址,后续应用服务程序与OneNET命令处理服务器直接通信。
(4)应用服务程序读取配置文件,根据配置文件信息,向OneNET命令处理服务器注册视频设备,添加视频通道。配置文件采用JSON格式,包含三部分内容:①profile,配置OneNET云平台上的产品ID和设备注册码;②ONVIF,配置OneNET云平台上的视频通道和视频设备所对应的实际设备所在的IP、登录用户名和密码,一台视频设备对应云平台上的一个视频通道,有多个视频设备需配置多条通道;③rvod,配置历史视频信息,有多个历史视频需配置多条记录。
应用服务程序配置文件具体内容如下:
(5)OneNET云平台提供视频服务HTTP API接口,播放设备根据设备ID、API-Key可以获取视频通道信息。OneNET云平台HTTP接口-获取通信信息见表1所列。
表1 OneNET云平台HTTP接口-获取通信信息
OneNET云平台HTTP接口-获取通信信息实例如下:
(6)播放设备根据设备ID、API-Key和视频通道ID发送直播命令,获取的实时拉流地址和accessToken见表2所列。
表2 OneNET云平台HTTP接口-实时拉流地址和accessToken
OneNET云平台HTTP接口-实时拉流地址和accessToken实例如下:
(7)播放设备根据拉流地址发起直播请求。具体格式说明见表3所列。
表3 播放设备直播URL格式
播放设备直播URL实例如下:
One NET提供的视频接收服务器的RTMPURL实例如下:
市场上的视频设备不能直接接入OneNET云平台,须通过应用服务程序接入。应用服务程序需支持的协议如下:
(1)支持ONVIF协议,通过该协议与视频设备通信,获取视频设备能力信息。
(2)支持RTSP/RTP/RTCP/SDP等协议,从ONVIF设备服务器获取音视频数据。
(3)支持OneNET视频协议:①在云平台上添加视频设备、视频通道;②解析云平台下发的命令;③将从ONVIF设备服务器接收到的音视频数据以RTMP协议重新封装,发给云平台。
应用服务程序采用多线程实现,整个程序包含三个线程:主线程、接收线程、直播线程。主线程负责初始化工作,读取配置文件;与ONVIF设备服务器建立连接,获取设备及音视频信息,创建接收线程;与云平台建立连接,在云平台上创建虚拟设备及通道;与云平台保持长连接,接收云平台下发的命令,并做出相应的响应,若是视频直播命令,则创建直播线程。接收线程和直播线程之间用缓冲队列通信,接收线程是生产者,以RTSP/RTP/RTCP/SDP等协议与ONVIF设备服务器通信,获取实时音视频数据,将音视频数据送入缓冲队列;直播线程是消费者,从缓冲队列中获取数据,封装成RTMP协议格式发送给云平台。应用服务程序主线程流程如图3所示。
图3 应用服务程序主线程流程
开启网络摄像头和应用服务程序,登录OneNET主页,进入产品页面,找到视频通道,点击实时视频,即可看到摄像头内容。OneNET上的视频设备和通道以及视频直播效果分别如图4和图5所示。
图4 OneNET上的视频设备和通道
图5 视频直播效果图
视频数据能提供丰富的信息,网络视频设备在生活中也已经非常普遍,如何在现有条件下不需要更换设备即可将视频设备接入物联网是一个有较高实用价值的课题。本文通过分析OneNET视频通信流程及通信协议,设计应用服务器,以较小成本实现视频设备接入物联网,以期为用户提供更为丰富的信息和更好的体验。