Share via


Azure Video Analyzer Edge-Clientbibliothek für Python – Version 1.0.0b4

Veraltet. Wir setzen den Azure Video Analyzer-Vorschaudienst zurück, wir empfehlen Ihnen, Ihre Anwendungen nach dem 01. Dezember 2022 zu übertragen. Dieses SDK wird nicht mehr beibehalten.

Azure Video Analyzer ist ein azure applied AI Service , der eine Plattform zum Erstellen intelligenter Videoanwendungen bietet, die sowohl Edge- als auch Cloudinfrastrukturen umfassen können. Die Plattform bietet die Möglichkeit, Livevideos zu erfassen, aufzuzeichnen und zu analysieren sowie die Ergebnisse, Video- und Videoanalysen, in Azure-Diensten am Edge oder in der Cloud zu veröffentlichen. Es ist als erweiterbare Plattform konzipiert, mit der Sie verschiedene Videorückschluss-Edgemodule wie Cognitive Services-Module oder benutzerdefinierte Rückschlussmodule verbinden können, die mit Ihren eigenen Daten mithilfe von Open Source Machine Learning oder Azure Machine Learning trainiert wurden.

Verwenden Sie die Clientbibliothek für Video Analyzer Edge für Folgendes:

  • Vereinfachen der Interaktionen mit den Microsoft Azure IoT SDKs
  • Programmgesteuertes Erstellen von Pipelinetopologien und Livepipelines

Paket (PyPI) | Produktdokumentation | Direkte Methoden | Pipelines | Quellcode | Proben

Erste Schritte

Installieren des Pakets

Installieren Sie die Video Analyzer Edge-Clientbibliothek für Python mit pip:

pip install azure-media-videoanalyzer-edge

Voraussetzungen

  • Für die Verwendung dieses Pakets ist Python 2.7 bzw. 3.6 oder höher erforderlich.

  • Sie benötigen ein aktives Azure-Abonnement und eine IoT-Geräteverbindungszeichenfolge, um dieses Paket verwenden zu können.

  • Um mit Azure IoT Hub zu interagieren, müssen Sie ausführenpip install azure-iot-hub

  • Sie müssen die Version des SDK verwenden, die der Version des verwendeten Video Analyzer Edge-Moduls entspricht.

    SDK Video Analyzer-Edgemodul
    1.0.0b3 1.1
    1.0.0b2 1.0
    1.0.0b1 1.0

Erstellen einer Pipelinetopologie und Stellen von Anforderungen

Besuchen Sie die Beispiele für Startcode.

Wichtige Begriffe

Pipelinetopologie im Vergleich zur Livepipeline

Eine Pipelinetopologie ist eine Blaupause oder Vorlage zum Erstellen von Livepipelines. Sie definiert die Parameter der Pipeline mithilfe von Platzhaltern als Werte für sie. Eine Livepipeline verweist auf eine Pipelinetopologie und gibt die Parameter an. Auf diese Weise können Sie mehrere Livepipelines verwenden, die auf dieselbe Topologie verweisen, aber unterschiedliche Werte für Parameter aufweisen. Weitere Informationen finden Sie unter Pipelinetopologien und Livepipelines.

CloudToDeviceMethod

Ist CloudToDeviceMethod Teil des azure-iot-hub-SDk. Mit dieser Methode können Sie One-Way-Benachrichtigungen an ein Gerät in Ihrem IoT Hub kommunizieren. In unserem Fall möchten wir verschiedene direkte Methoden wie PipelineTopologySetRequest und PipelineTopologyGetRequestkommunizieren. Zum Verwenden CloudToDeviceMethod müssen Sie zwei Parameter übergeben: method_name und payload.

Der erste Parameter , method_nameist der Name der direkten Methodenanforderung, die Sie senden. Stellen Sie sicher, dass Sie die vordefinierte method_name Eigenschaft jeder Methode verwenden. Beispiel: PipelineTopologySetRequest.method_name.

Der zweite Parameter sendet payloaddie gesamte Serialisierung der Pipelinetopologieanforderung. Zum Beispiel, PipelineTopologySetRequest.serialize()

Beispiele

Erstellen einer Pipelinetopologie

Zum Erstellen einer Pipelinetopologie müssen Sie Quellen und Senken definieren.

#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)

Erstellen einer Livepipeline

Zum Erstellen einer Livepipeline benötigen Sie eine vorhandene Pipelinetopologie.

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)

Aufrufen einer direkten Methode

Um eine direkte Methode auf Ihrem Gerät aufzurufen, müssen Sie zuerst die Anforderung mithilfe des Video Analyzer Edge SDK definieren und dann diese Methodenanforderung mithilfe des IoT SDK CloudToDeviceMethodsenden.

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)

Informationen zum Testen verschiedener Pipelinetopologien mit dem SDK finden Sie in den offiziellen Beispielen.

Problembehandlung

  • Denken Sie beim Senden einer Methodenanforderung mithilfe der IoT Hub CloudToDeviceMethod daran, den Namen der Methodenanforderung nicht direkt einzugeben. Verwenden Sie stattdessen [MethodRequestName.method_name].
  • Stellen Sie sicher, dass Sie die gesamte Methodenanforderung serialisieren, bevor Sie sie an übergeben. CloudToDeviceMethod

Nächste Schritte

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Probleme auftreten, öffnen Sie ein Problem auf unserem Github.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex, oder wenden Sie sich mit weiteren Fragen oder Kommentaren an opencode@microsoft.com.