本帖最后由 xiaoqing 于 2011-11-21 17:29 编辑
这里介绍一下感知网webservice接口的一个典型用例,也是一般的用法,希望能帮助第一次使用接口的同事可以快速上手。
第一步:
使用ListDevice接口或CamTree接口,获取视频列表
这两个接口都是根据用户名与密码,获得该用户名下的所有设备(Device)的列表;
根据设备能力不同,每个设备(Device)下会有1个或多个摄像头(Camera)的信息;
再说一下这两个接口的不同:
ListDevice:以设备(Device)为主,返回一个平级的列表;
CamTree:以摄像头(Camera)为主,返回一个树形的列表,此树形结构从感知网的“视频分组”栏维护,除非为感知网用户订做客户端或第三方应用,一般不需使用此接口。
调用示例:
http://testweb.pernet.tv/webservice_test.php?opr=ListDevice&s=www.pernet.tv&u=15816883316&p=888999
上边的链接是一个对ListDevice接口的调用,在浏览器地址栏里打开这个地址,就可以看到调用ListDevice接口返回的结果。为了能先有一个整体印象,可以逐个点击‘<Device Mac="'前边的'-'号,将数据折起来,如图:
其中上边的是一些分页信息(数据多时使用分页,见接口文档中接口的分页参数的解释),下面的就是设备列表。如'<Device Mac="00606E726B63">'就表示一个设备,其中的"00606E726B63"就是这个设备的MAC地址,可用来唯一标识一台设备。
我们点击'<Device Mac="00606E726B63">'前边的'+'号,将其展开:
'<Camera Id="1">'表示这个设备下的一个摄像头,其中的Id="1"表示摄像头的通道号,可以理解为序号。一个设备下可能有一个或多个摄像头,如,有三个摄像头,就会有依次有:<Camera Id="1"><Camera Id="2"><Camera Id="3">。
现在点击'<Camera Id="1">'前的'+'号,将其展开:
上边两个小红框中的<Online>表示视频是否在线,0表示不在线,1表示在线;<Active>表示此摄像头是否被激活,0表示未激活,1表示激活,不应该将未激活的数据展示给用户。 下边三个大红框中分别是三个视频链接:<WebUrl>,<IPhooneUrl>,<WapUrl>。用途分别是: <IPhoneUrl>:用于iPhone,iPad等ios设备上,是http协议的一个链接; <WebUrl>,<WapUrl>:用于PC, Android设备,普通手机上,是rtsp协议的一个链接。区别是<WebUrl>是CIF码流,较清晰,<WapUrl>是QCIF码流,较流畅,一般仅用于用户使用2G网络时的观看。
上边介绍几个ListDevice接口返回数据最常用的几个节点<Online>、<WebUrl>、<IPhoneUrl>等,其它数据节点一般用不到。如需使用可在论坛里提问,然后也可直接与我们技术人员联系获取支持。
[提示]:如果不是经常添加设备,可以将ListDevice的结果中的Mac地址和通道号等信息缓存在本地,获取视频链接可以根据Mac地址和通道号调用ListDevCameras接口获得。总之,有了Mac地址和通道号,就可以去调用其它接口了。
第二步:
从第一步接口的返回数据中,取出Mac地址和通道号(解释见下面),根据实际需要进行其它功能接口的调用(如视频观看,如云台控制等)
从第一步返回的数据中,取得(Mac/Sn + 通道号)信息后,就可以根据需要进行一些操作了。
如果是进行观看,从数据中取得<WebUrl>,<IPhoneUrl>,<WapUrl>等视频链接就可以用了(参见上边的"调用示例")
如果要进行云台控制,则从数据中取得设备Mac地址和通道号,然后调用DevicePTZ接口;
视频观看,也可以从数据中取得设备Mac地址和通道号,再调用ListDevCameras接口,一般用于刷新单个视频的播放链接;
特别说明一下:视频链接存在过期问题,建议在观看前调用ListDevCameras接口重新取得视频链接。常用的解决方案:Web上用Ajax,Wap上直接刷新页面,客户端就不用说了。
用户登录:
使用CheckUser接口
最后,一些可能需要解释一下的东西:
Mac:每个设备(Device)会有一个Mac地址;
Sn:每个设备(Device)会有一个Sn序列号,一般与Mac二者任选一使用即可;
CamId(通道号):一个设备(Device)下可能会有0个、1个或多个的摄像头(Camera),因此,要唯一确定一路摄像头,需要(Mac/Sn + 通道号)两个信息。通道号一般为1/2/3/4等序号,即返回数据中的<CamId>节点;
|