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á ejecutar
pip 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 CloudToDeviceMethod
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)
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.
Azure SDK for Python