物联网技术  2022年 / 第1期
420 引 言
视频数据相对于其他数据更加直观,在物联网方案中加入视频,能为用户提供更丰富的信息和更好的体验。OneNET 是由中国移动打造的物联网开放平台[1]。平台支持MQTT 、EDP 、MOBUS 等十多种主流的物联网协议,支持传感器采集数据、图片和视频数据的上传及使用,帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案[2]。本文详细分析了OneNET 视频通信流程及通信协议,设计了应用服务程序,
提出了一种基于OneNET 云平台构建视频应用的方案。
1 系统框架
本设计中视频设备采用市场上成熟的网络摄像头产品,产品需支持ONVIF 、RTSP 、RTP 、RTCP 、SDP 等协议[3]。网络摄像头完成音视频数据采集、编码,使用ONVIF 协 议[4]和应用服务程序通信,确定网络视频的接口、数据类型以及数据交互的模式,将音视频数据传送给应用服务程序。应用服务程序
负责在云平台注册设备、创建视频通道,并使用RTMP 协议[5]将接收到的音视频数据上传至云平台。播放设备可以是安装了流媒体播放器的PC 、手机、平板电脑
等,通过RTMP/HLS 协议获取音视频数据进行播放。基于OneNET 云平台的视频应用系统框架如图1所示。
图1 基于OneNET 云平台的视频应用
2 通信流程
如图2所示为基于OneNET 云平台的视频应用通信流程。具体如下:
(1)应用服务程序(ONVIF 客户端)读取配置文件,获得视频设备IP ,并连接视频设备(ONVIF 服务器)。ONVIF 规范规定设备管理和控制部分所定义的接口均以Web Services 形式提供,作为服务提供者的设备为服务端。每一个支持ONVIF 规范的终端设备均须提供与功能相对应的Web Services 程序[6]。服务端与客户端的数据交互采用SOAP 协议。ONVIF 中的其他部分,比如音视频流,则通过RTP/RTSP 协议进行交互。客户端根据WSDL 描述文档[7],会生成一个SOAP 请求消息,该请求会被嵌入在一个HTTP POST 请求中,发送到Web Services 所在的Web 服务器。Web Services 请求处理器解析收到的SOAP 请求,调用相应的Web Services ,再生成相应的SOAP 应答。Web 服务器得到SOAP 应答后,会再通过HTTP 应答的方式把信息送回到客户端。
张 萍,胡应坤
(广东工贸职业技术学院 计算机与信息工程系,广东 广州 510510)
摘 要:
视频能提供丰富的信息量,如何将种类繁多的视频设备接入物联网,是十分有挑战的课题。本文分析了OneNET 云平台视频通信流程及通信协议,并设计了应用服务程序,提出了一种基于OneNET 云平台构建视频应用的方案。该方案使用常见的网络摄像头采集音视频数据,通过应用服务程序接入OneNET ,客户可通过流媒体播放器观看实时视频。实验表明,应用服务程序有较好的兼容性,不同品牌、型号的视频设备,只要支持ONVIF 、RTSP 、RTP 等协议,即可通过应用服务程序向OneNET 上传音视频数据,以较小成本实现视频数据接入物 联网。
关键词:
物联网;视频应用;OneNET 云平台;RTMP 协议;RTSP 协议;ONVIF 协议中图分类号:TP393.09;TP311.56;TM925.12  文献标识码:A  文章编号:
2095-1302(2022)01-0042-05收稿日期:2020-12-29  修回日期:2021-01-27
基金项目:广东工贸职业技术学院2020校级科研课题“基于云平台
的物联网系统构建研究”(2020-ZK-09);广东省教育厅普通高校重点科研平台和项目(重点领域新一代信息技术专项)课题“基于高精度定位和大数据技术的智慧停车系统关键技术研究和开发”(2020ZDZX3098)
图2 基于OneNET云平台的视频应用通信流程以应用服务程序获取视频能力为例,进行如下说明:
①应用服务程序向视频设备发送HTTP POST请求,POST的内容是WSDL描述文件,获取设备Analytics、Device、Event、Imaging、Media、PTZ等方面的能力。WSDL描述文件内容如下:
POST /onvif/device_service HTTP/1.1
Host: 192.168.1.188
User-Agent: gSOAP/2.8
Content-Type: application/soap+xml; charset=utf-8; action=" /ver10/device/wsdl/GetCapabilities"
Content-Length: 3449
Connection: close
SOAPAction: "/ver10/device/wsdl/ GetCapabilities"
………
//省略的部分是WSDL描述文件
②视频设备调用相应的Web Services,获取结果回复应用程序,回复的内容是对于设备能力的说明,如下:HTTP/1.1 200 OK
Server: nginx
Date: Mon, 03 Jan 2000 12:11:08 GMT
Content-Type: application/soap+xml; charset=utf-8 <tt:RTP_TCP>false</tt:RTP_TCP>
<tt:RTP_RTSP_TCP>true</tt:RTP_RTSP_TCP>
</tt:StreamingCapabilities>
</tt:Media>
<tt:PTZ>
<tt:XAddr>192.168.1.188:80/onvif/ptz</tt:XAddr>
</tt:PTZ>
<tt:Extension>
<tt:DeviceIO>
……
从上述内容可以看出,此设备支持Analytics、Imaging、Media、PTZ,且视频传输的方式是RTP_RTSP_TCP方式。
(2)应用服务程序以RTSP协议与视频设备交互,完成认证、获取音视频流信息,比如音视频编码格式信息等步骤,视频设备按照RTP协议封装音视频数据。为保证画质,传输层协议使用TCP,而不是UDP。下面给出了视频设备反馈的SDP内容:
RTSP/1.0 200 OK
CSeq: 3
Date: 09 Jan 2000 06:39:55 GMT
Content-Type: application/sdp
Content-Base:rtsp://admin:**************.1.188:554/ch01.264/
Content-Length: 687
2022年 / 第1期物联网技术
43
物联网技术  2022年 / 第1期
44a=source-filter: incl IN IP4 * 192.168.1.188s=RTSP Server t=0 0
a=range:npt=0-m=video 0 RTP/A VP 96c=IN IP4 192.168.1.188a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=64002A; packetization-mode=1; sprop-parameter-sets=Z2QAKqwsaoHgCJ+WbgICAgQAAAAA ,aO4xshu4FAAQ
a =M e d i a _h e a d e r :M E D I A I N F O =494D 4B4801010000040001000000000000000000 0000000000000000000000000000000000000000;
a=appversion:1.0a=control:?ctype=video a=recvonly
m=audio 0 RTP/A VP 0a=rtpmap:0 pcmu/8000/1a=control:?ctype=audio a=recvonly
m=application 0 RTP/A VP 106a=rtpmap:adata/90000a=control:?ctype=app106a=sendonly
(3)应用服务程序以UDP 方式与OneNET 引导机
[5]
(183.230.40.42:
9101)通信,获得OneNET 命令处理服务器地址,后续应用服务程序与OneNET 命令处理服务器直接通信。
(4)应用服务程序读取配置文件,根据配置文件信息[8]
,向OneNET 命令处理服务器注册视频设备,添加视频通道。配置文件采用JSON 格式,包含三部分内容:①profile ,配置OneNET 云平台上的产品ID 和设备注册码;②ONVIF ,配置OneNET 云平台上的
视频通道和视频设备所对应的实际设备所在的IP 、登录用户名和密码,一台视频设备对应云平台上的一个视频通道,有多个视频设备需配置多条通道;③rvod ,配置历史视频信息,有多个历史视频需配置多条 记录。
应用服务程序配置文件具体内容如下:
{
"profile":{
"productid":355422,
//OneNet 云平台上的产品ID
}, "onvif": [ {
"title":"1",
//OneNet 云平台上显示出来的通道名称,可修改 "channel_id":1,
//OneNet 云平台上显示出来的通道ID ,可修改 "url": "192.168.1.188/onvif/device_service", //视频
设备IP
"user": "admin", //视频设备用户名 "passwd": "123456",  //视频设备登录密码 "desc":"1",  //通道描述,可修改
基于tcp协议的应用程序包括
"defaultlevel": 1
//默认1,可修改
} ], "rvod": [
{ "channel_id":1,
//通道ID
"location":"/test.mp4",
//历史视频文件名
"beginTime":"2016-12-08 00:00:00", //历史视频起始时间"endTime":"2016-12-08 00:29:59", //历史视频结束时间
"videoTitle":"1" //OneNet 云平台上显示出来的历史视频名称 }
]
(5)OneNET 云平台提供视频服务HTTP API 接口[9]
,播放设备根据设备ID 、API-Key 可以获取视频通道信息。OneNET 云平台HTTP 接口-获取通信信息见表1所列。
表1 OneNET 云平台HTTP 接口-获取通信信息获取内容获取具体信息
URL http :// {API_ADDRESS}/device/QryChannel
HTTP 头部api-key :// APIkey 必填URL 参数
device_id=//设备ID 必填
OneNET 云平台HTTP 接口-获取通信信息实例如下:
//播放设备发送的获取通道信息命令
GET /ipc/video/device/QryChannel?device_id=642702362 HTTP/1.1
Host: 183.230.40.33
Api-Key:7SWhn7y9YPEFBd2E50T9i7CZqnE=Connection: close
//OneNet 云平台反馈的视频通道信息
HTTP/1.1 200 OK
2022年 / 第1期  物联网技术
45
Pragma: no-cache
{"errno":0,"error":"succ","page_info":{"total_num":1,"page_total":1,"page_size":50,"current_page":1},"result":[{"channel_id":1,"title ":"1","desc":"1","on_off":0}]}
(6)播放设备根据设备ID 、API-Key 和视频通道ID 发送直播命令,获取的实时拉流地址和accessToken 见表2所列。
表2 OneNET 云平台HTTP 接口-实时拉流地址和accessToken 获取内容获取具体信息
URL http :// {API_ADDRESS}/play_address HTTP 头部api-key :xxxx-ffff-zzzzz ,必须master key URL 参数
device_id=//接收该数据的设备ID ,必填channel_
id=//对应数据流名称中的channelnum protocol_type=播放协议类型 0:rtmp 1:hls 2:https-hls
OneNET 云平台HTTP 接口-实时拉流地址和accessToken 实例如下:
//播放设备发送的获取实时拉流地址命令
GET /ipc/video/play_address?device_id=642702362&channel_id=1&protocol_type=0 HTTP/1.1
Host: 183.230.40.33
Api-Key:7SWhn7y9YPEFBd2E50T9i7CZqnE=Connection: close
//OneNet 云平台反馈的拉流信息
HTTP/1.1 200 OK
Date: Fri, 06 Nov 2020 07:11:14 GMT Content-Length: 407Connection: close Server: nginx/1.17.10Pragma: no-cache {"errno": 0,"data" : { "addr": "47.106.60.245:1936",
"accessToken": "eyJrZXkiOjY4NTEsInNpZ24iOiIyOE1kQV
RwYTJnekN4RFo5dUl5cXRHTXVTOHhaS1k2VlFjX1oyRnJZdlhOeS1UaGZ0YnFKNHkxTnFOaktOQXd6OXZxQndMN3N6eUtiZUVFNGdO MVdPbTZJenk4amxmNnlRV015c1ZFdVpJZVFNb0JaVW14WldaQ1Z KUGg1c2VqNlF4Z3pmNEN0aURRMTV oamU2THlqRGlXMkV5dFplQ msyYllPdW84ZmxnRkUifQ", "type": "rtmp",
"coveraddr": "47.106.60.245:8800"
},
"error" : "succ"}
类 型格 式
RTMP rtmp ://ip :port/live/${device_id}-${channel_
id}?accessToken HLS
http ://183.230.40.39:8080/live/live_${device_id}_${channel_id}/index.m3u8?accessToken
播放设备直播URL 实例如下:
rtmp://47.106.60.245:1936/live/642702362-1?eyJrZXkiOjY4NTEsI nNpZ24iOiIyOE1kQVRwYTJnekN4RFo5dUl5cXRKWUw1QUlEdll3W F8yUGM4TDlnLUpSX2o3U0xIMEYtM1dYS2M3WTFVYklraGtnTmp TLXRBTGJLdHBVT0pXSllTSDVzb09SMFdXUVNNZWJXY3JFekh6SjVsTl90dXIzNmFaNHFOVENqRWE3ci1fWkJLX1B2encyUDV1eXV SRjMwRnl4azNhT0FJYXFWSmJzZVFNOUpxMVEifQ
h t t p ://v -a l i -h t t p -p l a y -g l.c m c c o n e n e t.c o m :8800/l i v e /live_642702362_1/index.m3u8?eyJrZXkiOjY4NTEsInNpZ24iOiIyOE1k QVRwYTJnekN4RFo5dUl5cXRPaFpqdDdiNEZsbkR5NnY5SGx
hNDV oZnVRUTB4X1FTMjBwYnF3WktKMTBmWFItMjk3RkxiRHItUUR0S 0NZTEZtMzZockoxVTg5TlJ3ejFEckgyV0NVaDBGZlZjVDV4T05TQ01qZUxiYnFnVXhKaXJXRjY2d3E3Y0lnYk9CaWJyZ2s0OGhpWDYwL TZESjd6bzBOS0dRNHdUMDBpenhoRTVaVVBURTd2TXlRbXkifQ
(8)OneNET 云平台接收到播放设备的直播请求后,将向应用服务程序发送视频直播请求和OneNET 视频接收服务器的RTMPURL 。应用服务程序以RTMP 协议向OneNET 视频接收服务器发送音视频数据,OneNET 再将音视频数据转发给播放设备。视频直播请求实例如下:
{"cmdId":5,"channel_id":1}
//符合JSON 格式,5表示视频直播请求,1表示视频通道号
OneNET 提供的视频接收服务器的RTMPURL 实例[6]
如下:
rtmp://47.106.60.245:1935/live/Or0mC9-ji_vOMMTVo-bwGb9hL 7CX6_8CcfIqEVPFiYllFWnwvypkWuUXvSrb1R8oe2n5r6mESibxFkO r8AIJeEOTSFUb-iP2ICNmv8bp0qVWXDzG01jUwy3lukijyZHzPvA_IqpuHOX17tgftzXferie7vUMXcxIH3_NpRZjWAo
3 应用服务程序
市场上的视频设备不能直接接入OneNET 云平台,须通过应用服务程序接入。应用服务程序需支持的协议如下:(1)支持ONVIF 协议,通过该协议与视频设备通信,获取视频设备能力信息。
(2)支持RTSP/RTP/RTCP/SDP 等协议,从ONVIF 设备服务器获取音视频数据。
(3)支持OneNET 视频协议:
①在云平台上添加视频设备、视频通道;②解析云平台下发的命令;③将从ONVIF
物联网技术  2022年 / 第1期
46程:主线程、接收线程、直播线程。主线程负责初始化工作,读取配置文件;与ONVIF 设备服务器建立连接,获取设备及音视频信息,创建接收线程;与云平台建立连接,在云平台上创建虚拟设备及通道;与云平台保持长连接,接收云平台下发的命令,并做出相应的响应,若是视频直播命令,则创建直播线程。接收线程和直播线程之间用缓冲队列通 信[10],接收线程是生产者,以RTSP/RTP/RTCP/SDP 等协议与ONVIF 设备服务器通信,获取实时音视频数据,将音视频数据送入缓冲队列;直播线程是消费者,从缓冲队列中获取数据,封装成RTMP 协议[11]格式发送给云平台。应用服务程序主线程流程如图3所示
图3 应用服务程序主线程流程
4 实验效果
开启网络摄像头和应用服务程序,登录OneNET 主页,进入产品页面,到视频通道,点击实时视频,即可看到摄像头内容。OneNET 上的视频设备和通道以及视频直播效果分别如图4和图5所示。
图4 OneNET 上的视频设备和通道
图5 视频直播效果图
5 结 语
视频数据能提供丰富的信息,网络视频设备在生活中也已经非常普遍,如何在现有条件下不需要更换设备即可将视频设备接入物联网是一个有较高实用价值的课题。本文通过分析OneNET 视频通信流程及通信协议,设计应用服务器,以较小成本实现视频设备接入物联网,以期为用户提供更为丰富的信息和更好的体验。
注:本文通讯作者为张萍。
参考文献
[1]张启龙,陈湘萍. OneNET 云平台WiFi 远程控制的智能家居系统
[J].现代电子技术,2020,43(14):26-29.
[2]刘晓剑.基于Onenet 的物联网监控系统[D].郑州:郑州大学,2016.
[3]叶锋,傅燕云,陈林芳,等.基于多协议融合的实时移动视频监控系统 [J].计算机系统应用,2015,25(4):80-85.
[4]丛冠男.基于ONVIF 协议具备视频联动功能的应急通信系统的设计与实现[D].北京:北京邮电大学,2019.
[5]崔营营,刘洋,刘志强.基于RTMP 协议的桥梁视频监控关键技术研究[J].物联网技术,2020,10(11):12-17.
[6]崔丽珍,徐锦涛,丁福星,等.基于物联网的农业大棚气象数据监测系统设计[J].电子技术应用,2018,44(12):73-76.[7]周汉达,李晓良,陈庆生,等.基于云平台的智能农业大棚系统[J].物联网技术,2020,10(4):62-64.
[8]丁飞,吴飞,艾成万,等.基于OneNet 平台的环境监测系统设计与实现[J].南京邮电大学学报(自然科学版),2018,38(4):28-33.
[9]刘佳,张莉,贾林涛,等.基于OneNet 云平台的智能办公室管理系统设计[J].华为科技学院学报,2019,16(2):118-124.[10]陈海福.基于ONVIF 协议的网络视频监控系统的开发与实现[D].
广州:广东工业大学,2015.
[11]许磊.基于 RTMP 协议的智能监控系统的设计与实现[D].广州:
广东工业大学,2017.
作者简介: 张 萍(1980—),女,江西抚州人,硕士,就职于广东工贸职业技术学院,研究方向为物联网应用、嵌入
式系统开发。
胡应坤(1992—),男,广东揭阳人,硕士,就职于广东工贸职业技术学院,研究方向为嵌入式系统应用。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。