你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Python 的 Azure 视频分析器 Edge 客户端库 - 版本 1.0.0b4
已弃用。 我们即将停用 Azure 视频分析器预览版服务,建议你在 2022 年 12 月 1 日前从视频分析器转换你的应用程序。 此 SDK 不再维护。
Azure 视频分析器是一项 Azure 应用 AI 服务 ,它提供一个平台,用于构建可跨边缘和云基础结构的智能视频应用程序。 该平台提供捕获、录制和分析实时视频的功能,以及将结果、视频和视频分析发布到边缘或云中的 Azure 服务。 它设计为一个可扩展的平台,使你能够连接不同的视频推理边缘模块(例如认知服务模块)或自定义推理模块,这些模块已使用开源机器学习或 Azure 机器学习使用你自己的数据进行了训练。
使用视频分析器 Edge 的客户端库可以:
- 简化与 Microsoft Azure IoT SDK 的交互
- 以编程方式构造管道拓扑和实时管道
包 (PyPI) | 产品文档 | 直接方法 | 管道 | 源代码 | 样品
入门
安装包
使用 pip 安装适用于 Python 的视频分析器 Edge 客户端库:
pip install azure-media-videoanalyzer-edge
先决条件
使用此包需要 Python 2.7、3.6 或更高版本。
需要一个活动的 Azure 订阅和一个 IoT 设备连接字符串才能使用此包。
若要与Azure IoT 中心交互,需要运行
pip install azure-iot-hub
需要使用与正在使用的视频分析器 Edge 模块版本相对应的 SDK 版本。
SDK 视频分析器边缘模块 1.0.0b3 1.1 1.0.0b2 1.0 1.0.0b1 1.0
创建管道拓扑并发出请求
请访问入门代码 的示例 。
关键概念
管道拓扑与实时管道
管道拓扑是用于创建实时管道的蓝图或模板。 它使用占位符作为管道的值来定义管道的参数。 实时管道引用管道拓扑并指定参数。 这样,就可以有多个实时管道引用同一拓扑,但参数值不同。 有关详细信息,请访问 管道拓扑和实时管道。
CloudToDeviceMethod
CloudToDeviceMethod
是 azure-iot-hub SDK 的一部分。 此方法允许将单向通知传达给 IoT 中心内的设备。 在本例中,我们希望传达各种直接方法,例如 PipelineTopologySetRequest
和 PipelineTopologyGetRequest
。 若要使用 CloudToDeviceMethod
,需要传入两个参数: method_name
和 payload
。
第一个参数 method_name
是要发送的直接方法请求的名称。 请确保使用每个方法的预定义 method_name
属性。 例如 PipelineTopologySetRequest.method_name
。
第二个 payload
参数 发送管道拓扑请求的整个序列化。 例如: PipelineTopologySetRequest.serialize()
示例
创建管道拓扑
若要创建管道拓扑,需要定义源和接收器。
#Parameters
user_name_param = ParameterDeclaration(name="rtspUserName",type="String",default="testusername")
password_param = ParameterDeclaration(name="rtspPassword",type="SecretString",default="testpassword")
url_param = ParameterDeclaration(name="rtspUrl",type="String",default="rtsp://www.sample.com")
#Source and Sink
source = RtspSource(name="rtspSource", endpoint=UnsecuredEndpoint(url="${rtspUrl}",credentials=UsernamePasswordCredentials(username="${rtspUserName}",password="${rtspPassword}")))
node = NodeInput(node_name="rtspSource")
sink = VideoSink(name="videoSink", inputs=[node], video_name="video", local_media_cache_path="/var/lib/videoanalyzer/tmp/", local_media_cache_maximum_size_mi_b="1024");
pipeline_topology_properties = PipelineTopologyProperties()
pipeline_topology_properties.parameters = [user_name_param, password_param, url_param]
pipeline_topology_properties.sources = [source]
pipeline_topology_properties.sinks = [sink]
pipeline_topology = PipelineTopology(name=pipeline_topology_name,properties=pipeline_topology_properties)
创建实时管道
若要创建实时管道,需要具有现有的管道拓扑。
url_param = ParameterDefinition(name="rtspUrl", value=pipeline_url)
pass_param = ParameterDefinition(name="rtspPassword", value="secret_password")
live_pipeline_properties = LivePipelineProperties(description="Sample pipeline description", topology_name=pipeline_topology_name, parameters=[url_param])
live_pipeline = LivePipeline(name=live_pipeline_name, properties=live_pipeline_properties)
调用直接方法
若要在设备上调用直接方法,需要首先使用视频分析器 Edge SDK 定义请求,然后使用 IoT SDK 的 CloudToDeviceMethod
发送该方法请求。
set_method_request = PipelineTopologySetRequest(pipeline_topology=pipeline_topology)
direct_method = CloudToDeviceMethod(method_name=set_method_request.method_name, payload=set_method_request.serialize())
registry_manager = IoTHubRegistryManager(connection_string)
registry_manager.invoke_device_module_method(device_id, module_d, direct_method)
若要使用 SDK 尝试不同的管道拓扑,请参阅官方 示例。
疑难解答
- 使用 IoT 中心
CloudToDeviceMethod
发送方法请求时,请记住不要直接键入方法请求名称。 需改用[MethodRequestName.method_name]
。 - 确保先序列化整个方法请求,然后再将其传递到
CloudToDeviceMethod
后续步骤
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com 。
如果遇到任何问题,请在 Github 上提出问题。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。
本项目采用 Microsoft 开源行为准则。 有关详细信息,请参阅“行为准则常见问题解答”,如有其他任何问题或意见,请联系 opencode@microsoft.com。