Bibliothèque de client Azure Video Analyzer Edge pour Python - version 1.0.0b4

Action déconseillée. Nous retirons le service Azure Video Analyzer en préversion. Nous vous conseillons de transférer vos applications hors de Video Analyzer d’ici le 1er décembre 2022. Ce KIT de développement logiciel (SDK) n’est plus géré.

Azure Video Analyzer est un service Azure Applied AI qui fournit une plateforme qui vous permet de créer des applications vidéo intelligentes qui peuvent s’étendre à la fois aux infrastructures de périphérie et cloud. La plateforme offre la possibilité de capturer, d’enregistrer et d’analyser des vidéos en direct, ainsi que de publier les résultats, la vidéo et l’analytique vidéo, sur les services Azure à la périphérie ou dans le cloud. Il est conçu pour être une plateforme extensible, qui vous permet de connecter différents modules de périphérie d’inférence vidéo, tels que des modules Cognitive Services, ou des modules d’inférence personnalisés qui ont été entraînés avec vos propres données à l’aide du Machine Learning open source ou d’Azure Machine Learning.

Utilisez la bibliothèque cliente pour Video Analyzer Edge pour :

  • Simplifier les interactions avec les SDK Microsoft Azure IoT
  • Construire par programmation des topologies de pipeline et des pipelines dynamiques

Package (PyPI) | | Documentation produitMéthodes directes | Pipelines | | Code sourceÉchantillons

Prise en main

Installer le package

Installez la bibliothèque cliente Video Analyzer Edge pour Python avec pip :

pip install azure-media-videoanalyzer-edge

Prérequis

  • Python 2.7 ou 3.6 ou version ultérieure est requis pour utiliser ce package.

  • Vous avez besoin d’un abonnement Azure actif et d’une chaîne de connexion d’appareil IoT pour utiliser ce package.

  • Pour interagir avec Azure IoT Hub vous devez exécuterpip install azure-iot-hub

  • Vous devez utiliser la version du KIT de développement logiciel (SDK) qui correspond à la version du module Video Analyzer Edge que vous utilisez.

    Kit SDK Module de périphérie Video Analyzer
    1.0.0b3 1.1
    1.0.0b2 1.0
    1.0.0b1 1.0

Création d’une topologie de pipeline et envoi de requêtes

Consultez exemples de code de démarrage.

Concepts clés

Topologie de pipeline et pipeline en direct

Une topologie de pipeline est un blueprint ou un modèle pour la création de pipelines dynamiques. Il définit les paramètres du pipeline à l’aide d’espaces réservés comme valeurs. Un pipeline actif fait référence à une topologie de pipeline et spécifie les paramètres. De cette façon, vous pouvez avoir plusieurs pipelines en direct référençant la même topologie, mais avec des valeurs différentes pour les paramètres. Pour plus d’informations, consultez topologies de pipeline et pipelines en direct.

CloudToDeviceMethod

fait CloudToDeviceMethod partie du SDk azure-iot-hub. Cette méthode vous permet de communiquer des notifications unidirectionnelles à un appareil dans votre hub IoT. Dans notre cas, nous voulons communiquer différentes méthodes directes telles que PipelineTopologySetRequest et PipelineTopologyGetRequest. Pour utiliser CloudToDeviceMethod , vous devez passer deux paramètres : method_name et payload.

Le premier paramètre, method_name, est le nom de la demande de méthode directe que vous envoyez. Veillez à utiliser la propriété prédéfinie method_name de chaque méthode. Par exemple : PipelineTopologySetRequest.method_name.

Le deuxième paramètre, payload, envoie l’intégralité de la sérialisation de la demande de topologie de pipeline. Par exemple : PipelineTopologySetRequest.serialize()

Exemples

Création d’une topologie de pipeline

Pour créer une topologie de pipeline, vous devez définir des sources et des récepteurs.

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

Création d’un pipeline dynamique

Pour créer un pipeline dynamique, vous devez disposer d’une topologie de pipeline existante.

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)

Appel d’une méthode directe

Pour appeler une méthode directe sur votre appareil, vous devez d’abord définir la demande à l’aide du Kit de développement logiciel (SDK) Video Analyzer Edge, puis envoyer cette demande de méthode à l’aide du Kit de CloudToDeviceMethoddéveloppement logiciel (SDK) IoT.

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)

Pour essayer différentes topologies de pipeline avec le SDK, consultez les exemples officiels.

Dépannage

  • Lors de l’envoi d’une demande de méthode à l’aide du CloudToDeviceMethod IoT Hub n’oubliez pas de ne pas taper directement le nom de la demande de méthode. Utilisez à la place [MethodRequestName.method_name]
  • Veillez à sérialiser l’ensemble de la demande de méthode avant de la passer à CloudToDeviceMethod

Étapes suivantes

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Si vous rencontrez des problèmes, ouvrez un problème sur notre github.

Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez opencode@microsoft.com pour toute question ou tout commentaire supplémentaire.