文档

场景案例

更新时间:

本文以Python SDK为例介绍基本接口的使用案例。

初始化client

import json
from aliyunsdkcore import client

# 需使用不同的region id来访问不同的region,比如:cn-qingdao
c = client.AcsClient("<YOUR-ACCESS-KEY-ID>","<YOUR-ACCESS-KEY-SECRET>","cn-qingdao")

获取空间列表

req = DescribeGroupsRequest.DescribeGroupsRequest()
req.set_PageNum(1)        # 可选,指定查询第几页

resp = c.do_action_with_exception(req)
data = json.loads(resp)
groups = data['Groups']

获取设备列表

  • 可按照空间ID查询空间内的设备列表。若空间ID未知,请先参考获取空间列表选取目标空间。

req = DescribeDevicesRequest.DescribeDevicesRequest()
req.set_GroupId(groups[0]['Id'])    # 可选,指定空间ID查询

resp = c.do_action_with_exception(req)
data = json.loads(resp)
devices = data['Devices']

获取流列表

  • 可按照空间ID查询空间内的流列表。若空间ID未知,请先参考获取空间列表选取目标空间。

  • 亦可按照设备ID查询设备上的流列表。若设备ID未知,请先参考获取设备列表选取目标设备。

req = DescribeStreamsRequest.DescribeStreamsRequest()
req.set_GroupId(groups[0]['Id'])    # 可选,指定空间ID查询
req.set_DeviceId(devices[1]['Id'])    # 可选,指定设备ID查询

resp = c.do_action_with_exception(req)
data = json.loads(resp)
streams = data['Streams']

获取流的播放地址

  • 可根据流ID获取播放地址。若流ID未知,请先参考获取流列表选取目标流。

req = DescribeStreamURLRequest.DescribeStreamURLRequest()
req.set_Id(streams[0]['Id'])        # 必选,流ID
req.set_OutProtocol('rtmp')        # 必选,播放协议。取值:rtmp、flv、hls
req.set_AuthKey('<AuthKey>')    # 必选,播放域名关联的主key,用于生成鉴权URL
req.set_Expire(86400)                # 可选,播放地址过期时间,单位秒

resp = c.do_action_with_exception(req)
data = json.loads(resp)
url = data['Url']

获取录制列表

  • 可根据流ID获取录制列表。若流ID未知,请先参考获取流列表选取目标流。

request = DescribeRecordsRequest.DescribeRecordsRequest()
request.set_StreamId("<StreamId>")     # 必选,流ID
request.set_StartTime("<StartTime>")    #必选,查询的开始时间。格式:2019-10-08T14:02:00Z 必传
request.set_EndTime("<EndTime>")    # 必选,查询的结束时间。格式:2019-10-09T14:02:00Z 必传
request.set_Type("record")    # 必选,按存储记录类型查询。取值:record(录制),snapshot(截图)
request.set_PageSize(20)    # 可选,分页大小,默认为20。
request.set_PageNum(1)     # 可选,第几个分页,默认为1

response=c.do_action_with_exception(request)
data = json.loads(resp)
records = data['Records']