Compartir a través de


Biblioteca cliente de Azure Video Analyzer Edge para Python: versión 1.0.0b4

En desuso. Estamos retirando el servicio de versión preliminar de Azure Video Analyzer, se recomienda realizar la transición y retirar las aplicaciones de Video Analyzer antes del 1 de diciembre de 2022. Este SDK ya no se mantiene.

Azure Video Analyzer es una instancia de Azure Applied AI Service que proporciona una plataforma para crear aplicaciones de vídeo inteligentes que pueden abarcar infraestructuras perimetrales y en la nube. La plataforma ofrece la capacidad de capturar, grabar y analizar vídeo en directo junto con la publicación de los resultados, el análisis de vídeo y vídeo, en los servicios de Azure en el perímetro o en la nube. Está diseñado para ser una plataforma extensible, lo que le permite conectar diferentes módulos perimetrales de inferencia de vídeo, como módulos de Cognitive Services, o módulos de inferencia personalizados que se han entrenado con sus propios datos mediante aprendizaje automático de código abierto o Azure Machine Learning.

Use la biblioteca cliente de Video Analyzer Edge para:

  • Simplificación de las interacciones con los SDK de IoT de Microsoft Azure
  • Construcción mediante programación de topologías de canalización y canalizaciones dinámicas

Paquete (PyPI) | | Documentación del productoMétodos | directos Tuberías | Código | fuente Muestras

Introducción

Instalar el paquete

Instale la biblioteca cliente de Video Analyzer Edge para Python con pip:

pip install azure-media-videoanalyzer-edge

Requisitos previos

  • Se requiere Python 2.7, 3.6 o posterior para usar este paquete.

  • Necesita una suscripción de Azure activa y una cadena de conexión de dispositivo IoT para usar este paquete.

  • Para interactuar con Azure IoT Hub deberá ejecutarpip install azure-iot-hub

  • Tendrá que usar la versión del SDK que corresponde a la versión del módulo perimetral de Video Analyzer que está usando.

    SDK Módulo perimetral de Video Analyzer
    1.0.0b3 1.1
    1.0.0b2 1.0
    1.0.0b1 1.0

Creación de una topología de canalización y realización de solicitudes

Visite los ejemplos para el código de inicio.

Conceptos clave

Topología de canalización frente a canalización en vivo

Una topología de canalización es un plano técnico o una plantilla para crear canalizaciones dinámicas. Define los parámetros de la canalización mediante marcadores de posición como valores para ellos. Una canalización activa hace referencia a una topología de canalización y especifica los parámetros. De este modo, puede tener varias canalizaciones activas que hacen referencia a la misma topología, pero con valores diferentes para los parámetros. Para más información, visite topologías de canalización y canalizaciones en directo.

CloudToDeviceMethod

CloudToDeviceMethod forma parte del SDk azure-iot-hub. Este método permite comunicar notificaciones unidireccionales a un dispositivo de IoT Hub. En nuestro caso, queremos comunicar varios métodos directos, como PipelineTopologySetRequest y PipelineTopologyGetRequest. Para usar CloudToDeviceMethod , debe pasar dos parámetros: method_name y payload.

El primer parámetro, method_name, es el nombre de la solicitud de método directo que se envía. Asegúrese de usar la propiedad predefinida method_name de cada método. Por ejemplo, PipelineTopologySetRequest.method_name.

El segundo parámetro, payload, envía toda la serialización de la solicitud de topología de canalización. Por ejemplo: PipelineTopologySetRequest.serialize()

Ejemplos

Creación de una topología de canalización

Para crear una topología de canalización, debe definir orígenes y receptores.

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

Creación de una canalización en vivo

Para crear una canalización en vivo, debe tener una topología de canalización existente.

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)

Invocar un método directo

Para invocar un método directo en el dispositivo, primero debe definir la solicitud mediante el SDK de Video Analyzer Edge y, después, enviar esa solicitud de método mediante el SDK de CloudToDeviceMethodIoT.

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)

Para probar diferentes topologías de canalización con el SDK, consulte los ejemplos oficiales.

Solución de problemas

  • Al enviar una solicitud de método mediante el IoT Hub CloudToDeviceMethod recuerde no escribir directamente el nombre de la solicitud del método. Se usa [MethodRequestName.method_name] en su lugar.
  • Asegúrese de serializar toda la solicitud de método antes de pasarla a CloudToDeviceMethod

Pasos siguientes

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.

Si tiene algún problema, abra un problema en nuestro Github.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para obtener más información, vea las preguntas más frecuentes sobre el código de conducta o póngase en contacto con opencode@microsoft.com si tiene preguntas o comentarios.