你当前正在访问 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 的客户端库可以:

包 (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

CloudToDeviceMethodazure-iot-hub SDK 的一部分。 此方法允许将单向通知传达给 IoT 中心内的设备。 在本例中,我们希望传达各种直接方法,例如 PipelineTopologySetRequestPipelineTopologyGetRequest。 若要使用 CloudToDeviceMethod ,需要传入两个参数: method_namepayload

第一个参数 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。