共用方式為


適用于 Python 的 Azure 影片分析器 Edge 用戶端程式庫 - 1.0.0b4 版

已取代。 我們即將淘汰 Azure 影片分析器預覽服務,建議您在 2022 年 12 月 1 日之前將應用程式轉換出影片分析器。 此 SDK 不會再維護。

Azure 影片分析器是 Azure 套用的 AI 服務 ,可提供平臺供您建置可跨越邊緣和雲端基礎結構的智慧型視訊應用程式。 平臺提供擷取、錄製和分析即時影片的功能,以及將結果、影片和影片分析發佈至邊緣或雲端中的 Azure 服務。 它是設計成可延伸的平臺,可讓您連接不同的影片推斷邊緣模組,例如認知服務模組,或使用開放原始碼機器學習或 Azure Machine Learning以您自己的資料定型的自訂推斷模組。

使用 Video Analyzer Edge 的用戶端程式庫來:

Package (PyPI) | 產品檔 | 直接方法 | 管道 | | 原始程式碼樣品

開始使用

安裝套件

使用 pip 安裝適用于 Python 的 Video Analyzer 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)

叫用直接方法

若要在裝置上叫用直接方法,您必須先使用 Video Analyzer 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 Bot 會自動判斷您是否需要提供 CLA,並適當地裝飾 PR (例如標籤、註解)。 請遵循 bot 提供的指示。 您只需要使用我們的 CLA 在所有存放庫上執行此動作一次。

此專案採用 Microsoft Open Source Code of Conduct (Microsoft 開放原始碼管理辦法)。 如需詳細資訊,請參閱管理辦法常見問題,或連絡 opencode@microsoft.com 任何其他問題或意見。