Inicio rápido: Detección de movimiento y emisión de eventos
![]()
Como alternativa, consulte los temas en Creación de aplicaciones de vídeo en el servicio.
Este inicio rápido le guiará por los pasos necesarios para empezar a usar Azure Video Analyzer. Usa una máquina virtual de Azure como un dispositivo IoT Edge y una secuencia de vídeo en directo simulada. Después de completar los pasos de la configuración, podrá ejecutar una secuencia de vídeo en directo simulada mediante una canalización de vídeo que detecta e informa de todos los movimientos de esa secuencia. El siguiente diagrama muestra una representación gráfica de esa canalización.
Este artículo se basa en un ejemplo de código escrito en C#.
Este artículo se basa en un ejemplo de código escrito en Python.
Requisitos previos
Una cuenta de Azure que incluya una suscripción activa. Cree una cuenta gratuita, en caso de que aún no lo haya hecho.
Nota
Necesitará una suscripción de Azure en la que tenga acceso a los roles Colaborador y Administrador de acceso de usuario. Si no tiene los permisos adecuados, póngase en contacto con el administrador de la cuenta para que se los conceda.
Visual Studio Code con las siguientes extensiones:
Sugerencia
Al instalar la extensión de Azure IoT Tools, es posible que se le solicite que instale Docker. Si lo desea, ignore esta petición.
Una cuenta de Azure que incluya una suscripción activa. Cree una cuenta gratuita, en caso de que aún no lo haya hecho.
Nota
Necesitará una suscripción de Azure en la que tenga acceso a los roles Colaborador y Administrador de acceso de usuario. Si no tiene los permisos adecuados, póngase en contacto con el administrador de la cuenta para que se los conceda.
Visual Studio Code con las siguientes extensiones:
Sugerencia
Al instalar la extensión de Azure IoT Tools, es posible que se le solicite que instale Docker. Si lo desea, ignore esta petición.
Configuración de los recursos de Azure
El proceso de implementación tardará unos 20 minutos. Al finalizar, tendrá determinados recursos de Azure implementados en la suscripción de Azure, entre los que se incluyen:
- Cuenta de Video Analyzer: este servicio en la nube se usa para registrar el módulo perimetral Video Analyzer y para reproducir vídeo grabado y análisis de vídeo.
- Cuenta de almacenamiento: para almacenar vídeo grabado y análisis de vídeo.
- Identidad administrada: es la identidad administrada asignada por el usuario que se usa para administrar el acceso a la cuenta de almacenamiento anterior.
- Máquina virtual: esta es una máquina virtual que actuará como su dispositivo perimetral simulado.
- IoT Hub: funciona como un centro de mensajes común para la comunicación bidireccional entre la aplicación de IoT, los módulos de IoT Edge y los dispositivos que administra.
Además de los recursos mencionados anteriormente, también se crean los siguientes elementos en el recurso compartido de archivos "deployment-output" de la cuenta de almacenamiento, para su uso en los inicios rápidos y tutoriales:
- appsettings.json: este archivo contiene la cadena de conexión del dispositivo y otras propiedades necesarias para ejecutar la aplicación de ejemplo en Visual Studio Code.
- env.txt: este archivo contiene las variables de entorno que necesita para generar manifiestos de implementación mediante Visual Studio Code.
- deployment.json: este es el manifiesto de implementación que usa la plantilla para implementar módulos perimetrales en el dispositivo perimetral simulado.
Sugerencia
Si tiene problemas para crear todos los recursos de Azure necesarios, siga los pasos manuales de este inicio rápido.
Información general

En este diagrama se muestra cómo fluyen las señales en este inicio rápido. Un módulo perimetral simula una cámara IP que hospeda un servidor de protocolo RTSP. Un nodo de origen RTSP extrae la fuente de vídeo de este servidor y envía fotogramas de vídeo al nodo del procesador de detección del movimiento. El nodo del procesador de detección de movimiento permite detectar movimiento en vídeos en directo. Examina los fotogramas de vídeo entrantes y determina si hay movimiento en el vídeo. Si se detecta movimiento, pasa el fotograma de vídeo al siguiente nodo en la canalización y emite un evento. Por último, los eventos emitidos se envían al receptor de mensajes de IoT Hub donde se publican en IoT Hub.
Configurado su entorno de desarrollo
Obtención del código de ejemplo
Clone el repositorio de ejemplos de C# de AVA.
Inicie Visual Studio Code y abra la carpeta en la que se descargó el repositorio.
En Visual Studio Code, vaya a la carpeta src/cloud-to-device-console-app y cree un archivo llamado appsettings.json. Este archivo contiene la configuración necesaria para ejecutar el programa.
Vaya al recurso compartido de archivos en la cuenta de almacenamiento creada en el paso de instalación anterior y busque el archivo appsettings.json en el recurso compartido de archivos "deployment-output". Haga clic en el archivo y, después, presione el botón "Descargar". El contenido debería abrirse en una nueva pestaña del explorador, que debería parecerse a esta:
{ "IoThubConnectionString" : "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX", "deviceId" : "avasample-iot-edge-device", "moduleId" : "avaedge" }La cadena de conexión de IoT Hub permite usar Visual Studio Code para enviar comandos a los módulos IoT Edge mediante Azure IoT Hub. Copie el JSON anterior en el archivo src/cloud-to-device-console-app/appsettings.json.
A continuación, vaya a la carpeta src/edge y cree un archivo llamado .env. Este archivo contiene las propiedades que Visual Studio Code utiliza para implementar módulos en los dispositivos perimetrales.
Vaya al recurso compartido de archivos en la cuenta de almacenamiento creada en el paso de instalación anterior y busque el archivo env.txt en el recurso compartido de archivos "deployment-output". Haga clic en el archivo y, después, presione el botón "Descargar". El contenido debería abrirse en una nueva pestaña del explorador, que debería parecerse a esta:
SUBSCRIPTION_ID="<Subscription ID>" RESOURCE_GROUP="<Resource Group>" AVA_PROVISIONING_TOKEN="<Provisioning token>" VIDEO_INPUT_FOLDER_ON_DEVICE="/home/localedgeuser/samples/input" VIDEO_OUTPUT_FOLDER_ON_DEVICE="/var/media" APPDATA_FOLDER_ON_DEVICE="/var/lib/videoAnalyzer" CONTAINER_REGISTRY_USERNAME_myacr="<your container registry username>" CONTAINER_REGISTRY_PASSWORD_myacr="<your container registry password>"Copie el JSON de env.txt en el archivo src/edge/.env.
Conexión a IoT Hub
En Visual Studio Code, establezca la cadena de conexión de IoT Hub. Para ello, seleccione el icono Más acciones, que se encuentra junto al panel AZURE IOT HUB, en la esquina inferior izquierda. Copie la cadena del archivo src/cloud-to-device-console-app/appsettings.json.
Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>En unos 30 segundos, actualice Azure IoT Hub en la sección inferior izquierda. Debería ver el dispositivo perimetral
avasample-iot-edge-device, que debe tener los siguientes módulos implementados:- Centro de Edge (nombre de módulo edgeHub)
- Agente de Edge (nombre de módulo edgeHub)
- Video Analyzer (nombre del módulo avaedge)
- Simulador RTSP (nombre de módulo rtspsim)
Preparación para supervisar los módulos
Cuando use o ejecute este inicio rápido o tutorial, los eventos se enviarán a IoT Hub. Para ver estos eventos, siga estos pasos:
Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.
Expanda el nodo Devices (Dispositivos).
Haga clic con el botón derecho en
avasample-iot-edge-devicey seleccione Iniciar la supervisión del punto de conexión de eventos integrado.Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Obtención del código de ejemplo
Clone el repositorio de ejemplos de Python de AVA.
Inicie Visual Studio Code y abra la carpeta en la que se descargó el repositorio.
En Visual Studio Code, vaya a la carpeta src/cloud-to-device-console-app y cree un archivo llamado appsettings.json. Este archivo contiene la configuración necesaria para ejecutar el programa.
Vaya al recurso compartido de archivos en la cuenta de almacenamiento creada en el paso de instalación anterior y busque el archivo appsettings.json en el recurso compartido de archivos "deployment-output". Haga clic en el archivo y, después, presione el botón "Descargar". El contenido debería abrirse en una nueva pestaña del explorador, que debería parecerse a esta:
{ "IoThubConnectionString": "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX", "deviceId": "avasample-iot-edge-device", "moduleId": "avaedge" }La cadena de conexión de IoT Hub permite usar Visual Studio Code para enviar comandos a los módulos IoT Edge mediante Azure IoT Hub. Copie el JSON anterior en el archivo src/cloud-to-device-console-app/appsettings.json.
A continuación, vaya a la carpeta src/edge y cree un archivo llamado .env. Este archivo contiene las propiedades que Visual Studio Code utiliza para implementar módulos en los dispositivos perimetrales.
Vaya al recurso compartido de archivos en la cuenta de almacenamiento creada en el paso de instalación anterior y busque el archivo env.txt en el recurso compartido de archivos "deployment-output". Haga clic en el archivo y, después, presione el botón "Descargar". El contenido debería abrirse en una nueva pestaña del explorador, que debería parecerse a esta:
SUBSCRIPTION_ID="<Subscription ID>" RESOURCE_GROUP="<Resource Group>" AVA_PROVISIONING_TOKEN="<Provisioning token>" VIDEO_INPUT_FOLDER_ON_DEVICE="/home/localedgeuser/samples/input" VIDEO_OUTPUT_FOLDER_ON_DEVICE="/var/media" APPDATA_FOLDER_ON_DEVICE="/var/lib/videoAnalyzer" CONTAINER_REGISTRY_USERNAME_myacr="<your container registry username>" CONTAINER_REGISTRY_PASSWORD_myacr="<your container registry password>"Copie el JSON de env.txt en el archivo src/edge/.env.
Conexión a IoT Hub
En Visual Studio Code, establezca la cadena de conexión de IoT Hub. Para ello, seleccione el icono Más acciones, que se encuentra junto al panel AZURE IOT HUB, en la esquina inferior izquierda. Copie la cadena del archivo src/cloud-to-device-console-app/appsettings.json.
Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>En unos 30 segundos, actualice Azure IoT Hub en la sección inferior izquierda. Debería ver el dispositivo perimetral
avasample-iot-edge-device, que debe tener los siguientes módulos implementados:- Centro de Edge (nombre de módulo edgeHub)
- Agente de Edge (nombre de módulo edgeHub)
- Video Analyzer (nombre del módulo avaedge)
- Simulador RTSP (nombre de módulo rtspsim)
Preparación para supervisar los módulos
Cuando use o ejecute este inicio rápido o tutorial, los eventos se enviarán a IoT Hub. Para ver estos eventos, siga estos pasos:
Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.
Expanda el nodo Devices (Dispositivos).
Haga clic con el botón derecho en
avasample-iot-edge-devicey seleccione Iniciar la supervisión del punto de conexión de eventos integrado.Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Revisión del vídeo de ejemplo
Cuando configura los recursos de Azure, se copia un vídeo corto del tráfico en la autopista en la máquina virtual Linux en Azure que usa como dispositivo IoT Edge. En este inicio rápido se usa el archivo de vídeo para simular una secuencia en directo.
Abra una aplicación como VLC Media Player. Seleccione Ctrl+N y, a continuación, pegue un vínculo al vídeo de ejemplo de cruce de autopista para iniciar la reproducción. Verá las imágenes de muchos vehículos moviéndose en el tráfico de una autopista.
Cuando configura los recursos de Azure, se copia un vídeo corto del tráfico en la autopista en la máquina virtual Linux en Azure que usa como dispositivo IoT Edge. En este inicio rápido se usa el archivo de vídeo para simular una secuencia en directo.
Abra una aplicación como VLC Media Player. Seleccione Ctrl+N y, a continuación, pegue un vínculo al vídeo de ejemplo de cruce de autopista para iniciar la reproducción. Verá las imágenes de muchos vehículos moviéndose en el tráfico de una autopista.
Examen de los archivos de ejemplo
En Visual Studio Code, vaya a src/edge. Vará el archivo .env y algunos archivos de plantilla de implementación.
La plantilla de implementación hace referencia al manifiesto de implementación del dispositivo perimetral, en el que las variables se utilizan para algunas propiedades. El archivo .env contiene los valores de esas variables.
Vaya a la carpeta src/cloud-to-device-console-app. Aquí verá el archivo appsettings.json y algunos otros archivos:
c2d-console-app.csproj: el archivo de proyecto de Visual Studio Code.
operations.json: una lista de las operaciones que desea que ejecute el programa.
Program.cs: el código del programa de ejemplo. Este código:
- Carga la configuración de la aplicación.
- Invoca métodos directos que expone el módulo perimetral de Video Analyzer. Puede usar el módulo para analizar secuencias de vídeo en directo mediante la invocación de sus métodos directos.
- Se pone en pausa para que pueda examinar la salida del programa en la ventana TERMINAL y los eventos generados por el módulo en la ventana de SALIDA.
- Invoca los métodos directos para limpiar los recursos.
En Visual Studio Code, vaya a src/edge. Vará el archivo .env y algunos archivos de plantilla de implementación.
La plantilla de implementación hace referencia al manifiesto de implementación del dispositivo perimetral, en el que las variables se utilizan para algunas propiedades. El archivo .env contiene los valores de esas variables.
Vaya a la carpeta src/cloud-to-device-console-app. Aquí verá el archivo appsettings.json y algunos otros archivos:
operations.json: una lista de las operaciones que desea que ejecute el programa.
main.py: código del programa de ejemplo. Este código:
- Carga la configuración de la aplicación.
- Invoca métodos directos que expone el módulo de Azure Video Analyzer. Puede usar el módulo para analizar secuencias de vídeo en directo mediante la invocación de sus métodos directos.
- Se pone en pausa para que pueda examinar la salida del programa en la ventana TERMINAL y los eventos generados por el módulo en la ventana de SALIDA.
- Invoca los métodos directos para limpiar los recursos.
Generación e implementación del manifiesto de implementación
El manifiesto de implementación define los módulos que se implementan en un dispositivo perimetral. También define los valores de configuración de los módulos.
Siga estos pasos para generar el manifiesto a partir del archivo de plantilla y, después, impleméntelo en el dispositivo perimetral.
Abra Visual Studio Code.
Al lado del panel AZURE IOT HUB, seleccione el icono Más acciones para establecer la cadena de conexión de IoT Hub. Puede copiar la cadena del archivo src/cloud-to-device-console-app/appsettings.json.

Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Haga clic con el botón derecho en src/edge/deployment.template.json y seleccione Generate IoT Edge Deployment Manifest (Generar manifiesto de implementación de IoT Edge).

Esta acción debe crear un archivo de manifiesto llamado deployment.amd64.json en la carpeta src/edge/config llamado.
Haga clic con el botón derecho en src/edge/config/deployment.amd64.json, seleccione Create Deployment for Single Device (Crear una implementación para un dispositivo individual) y seleccione el nombre del dispositivo perimetral.

Cuando se le pida que seleccione un dispositivo IoT Hub, elija avasample-iot-edge-device en el menú contextual.
Tras aproximadamente 30 segundos, en la esquina inferior izquierda de la ventana, actualice Azure IoT Hub. El dispositivo perimetral ahora muestra los siguientes módulos implementados:
- Módulo perimetral de Video Analyzer (nombre del módulo
avaedge) - Simulador del Protocolo de transmisión en tiempo real (RTSP) (nombre del módulo
rtspsim)
- Módulo perimetral de Video Analyzer (nombre del módulo
El manifiesto de implementación define los módulos que se implementan en un dispositivo perimetral. También define los valores de configuración de los módulos.
Siga estos pasos para generar el manifiesto a partir del archivo de plantilla y, después, impleméntelo en el dispositivo perimetral.
Abra Visual Studio Code.
Al lado del panel AZURE IOT HUB, seleccione el icono Más acciones para establecer la cadena de conexión de IoT Hub. Puede copiar la cadena del archivo src/cloud-to-device-console-app/appsettings.json.

Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Haga clic con el botón derecho en src/edge/deployment.template.json y seleccione Generate IoT Edge Deployment Manifest (Generar manifiesto de implementación de IoT Edge).

Esta acción debe crear un archivo de manifiesto llamado deployment.amd64.json en la carpeta src/edge/config llamado.
Haga clic con el botón derecho en src/edge/config/deployment.amd64.json, seleccione Create Deployment for Single Device (Crear una implementación para un dispositivo individual) y seleccione el nombre del dispositivo perimetral.

Cuando se le pida que seleccione un dispositivo IoT Hub, elija avasample-iot-edge-device en el menú contextual.
Tras aproximadamente 30 segundos, en la esquina inferior izquierda de la ventana, actualice Azure IoT Hub. El dispositivo perimetral ahora muestra los siguientes módulos implementados:
- Azure Video Analyzer (nombre del módulo
avaedge) - Simulador del Protocolo de transmisión en tiempo real (RTSP) (nombre del módulo
rtspsim)
- Azure Video Analyzer (nombre del módulo
Preparación para supervisar eventos
El módulo perimetral de Video Analyzer se usará para detectar el movimiento en la secuencia de vídeo en directo entrante y enviar eventos a IoT Hub. Para ver estos eventos, siga estos pasos:
Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.
Expanda el nodo Devices (Dispositivos).
Haga clic con el botón derecho en avasample-iot-edge-device y seleccione Iniciar la supervisión del punto de conexión de eventos integrado.

Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Va a utilizar el módulo de Azure Video Analyzer para detectar el movimiento en la secuencia de vídeo en directo entrante y enviar eventos a IoT Hub. Para ver estos eventos, siga estos pasos:
- Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.
- Expanda el nodo Devices (Dispositivos).
- Haga clic con el botón derecho en avasample-iot-edge-device y seleccione Iniciar la supervisión del punto de conexión de eventos integrado.

Nota
Es posible que se le pida que proporcione información del punto de conexión integrado del centro de IoT. Para obtener esa información, en Azure Portal, vaya a su centro de IoT y busque la opción Puntos de conexión integrados en el panel de navegación izquierdo. Haga clic ahí y busque el punto de conexión compatible con el centro de eventos en la sección Punto de conexión compatible con el centro de eventos. Copie y use el texto del cuadro. El aspecto del punto de conexión será similar a este: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Ejecución del programa de ejemplo
Para ejecutar el código de ejemplo, siga estos pasos:
En Visual Studio Code, abra la pestaña Extensiones (o presione Ctrl + Mayús + X) y busque Azure IoT Hub.
Haga clic con el botón derecho y seleccione la Configuración de la extensión.
Busque y habilite "Show Verbose Message" (Mostrar mensaje detallado).
(Mostrar mensaje detallado)En Visual Studio Code, vaya a src/cloud-to-device-console-app/operations.json.
En el nodo pipelineTopologySet, asegúrese de que ve el siguiente valor:
"pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"En los nodos
livePipelineSetylivePipelineDelete, asegúrese de que el valor de topologyName coincide con el valor de la propiedad name en la topología de la canalización:"topologyName" : "MotionDetection"Para iniciar una sesión de depuración, seleccione la tecla F5. La ventana TERMINAL mostrará algunos mensajes.
El archivo operations.json se inicia con llamadas a
pipelineTopologyListylivePipelineList. Si limpió los recursos al finalizar los inicios rápidos anteriores, este proceso devolverá listas vacías.----------------------- Request: pipelineTopologyList -------------------------------------------------- { "@apiVersion": "1.1" } --------------- Response: pipelineTopologyList - Status: 200 --------------- { "value": [] } --------------------------------------------------------------------------La ventana TERMINAL muestra el siguiente conjunto de llamadas al método directo:
- Una llamada a
pipelineTopologySetque utiliza el nodo pipelineTopologyUrl anterior. - Una llamada a
livePipelineSetque usa el cuerpo siguiente:
{ "@apiVersion": "1.1", "name": "Sample-Pipeline-1", "properties": { "topologyName": "MotionDetection", "description": "Sample pipeline description", "parameters": [ { "name": "rtspUrl", "value": "rtsp://rtspsim:554/media/camera-300s.mkv" }, { "name": "rtspUserName", "value": "testuser" }, { "name": "rtspPassword", "value": "testpassword" } ] } }- Una llamada a
livePipelineActivateque activa la canalización en directo y el flujo de vídeo. - Una segunda llamada a
livePipelineListque muestra que la canalización en directo está en estado de ejecución.
- Una llamada a
La salida de la ventana TERMINAL se pone en pausa en
Press Enter to continue. No seleccione Entrar todavía. Desplácese hacia arriba para ver las cargas de la respuesta JSON para los métodos directos que ha invocado.Cambie a la ventana SALIDA de Visual Studio Code. Verá los mensajes que el módulo perimetral de Video Analyzer envía al centro de IoT. En la siguiente sección de este inicio rápido se analizan estos mensajes.
La canalización en directo continúa ejecutándose y se imprimen los resultados. El simulador RTSP sigue recorriendo el vídeo de origen. Para detener la canalización en directo, vuelva a la ventana TERMINAL y seleccione Entrar.
La siguiente serie de llamadas limpia los recursos:
- Una llamada a
livePipelineDeactivatedesactiva la canalización. - Una llamada a
livePipelineDeleteelimina la canalización. - Una llamada a
pipelineTopologyDeleteelimina la topología. - Una llamada final a
pipelineTopologyListmuestra que la lista está vacía.
- Una llamada a
Para ejecutar el código de ejemplo, siga estos pasos:
En Visual Studio Code, abra la pestaña Extensiones (o presione Ctrl + Mayús + X) y busque Azure IoT Hub.
Haga clic con el botón derecho y seleccione la Configuración de la extensión.
Busque y habilite "Show Verbose Message" (Mostrar mensaje detallado).
(Mostrar mensaje detallado)En Visual Studio Code, vaya a src/cloud-to-device-console-app/operations.json.
En el nodo
pipelineTopologySet, asegúrese de que se muestra el valor siguiente:"pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"En los nodos
livePipelineSetylivePipelineDelete, asegúrese de que el valor de topologyName coincida con el valor de la propiedad name en la topología de la canalización:"topologyName" : "MotionDetection"-
- Desplazamiento a la ventana
TERMINALen VS Code - Use el comando cd para ir al directorio /video-analyzer-iot-edge-python-main/src/cloud-to-device-console-app
- Ejecute "python main.py" y verá los mensajes impresos en la ventana
TERMINAL
- Desplazamiento a la ventana
El archivo operations.json se inicia con llamadas a
pipelineTopologyListylivePipelineList. Si limpió los recursos al finalizar los inicios rápidos anteriores, este proceso devolverá listas vacías.----------------------- Request: pipelineTopologyList -------------------------------------------------- { "@apiVersion": "1.1" } --------------- Response: pipelineTopologyList - Status: 200 --------------- { "value": [] } --------------------------------------------------------------------------La ventana TERMINAL muestra el siguiente conjunto de llamadas al método directo:
- Una llamada a
pipelineTopologySetque utiliza el nodo pipelineTopologyUrl anterior. - Una llamada a
livePipelineSetque usa el cuerpo siguiente:
{ "@apiVersion": "1.1", "name": "Sample-Pipeline-1", "properties": { "topologyName": "MotionDetection", "description": "Sample pipeline description", "parameters": [ { "name": "rtspUrl", "value": "rtsp://rtspsim:554/media/camera-300s.mkv" }, { "name": "rtspUserName", "value": "testuser" }, { "name": "rtspPassword", "value": "testpassword" } ] } }- Una llamada a
livePipelineActivateque activa la canalización en directo y el flujo de vídeo. - Una segunda llamada a
livePipelineListque muestra que la canalización en directo está en estado de ejecución.
- Una llamada a
La salida de la ventana TERMINAL se pone en pausa en
Press Enter to continue. No seleccione Entrar todavía. Desplácese hacia arriba para ver las cargas de la respuesta JSON para los métodos directos que ha invocado.Cambie a la ventana SALIDA de Visual Studio Code. Verá los mensajes que el módulo de Azure Video Analyzer está enviando al centro de IoT. En la siguiente sección de este inicio rápido se analizan estos mensajes.
La canalización en directo continúa ejecutándose y se imprimen los resultados. El simulador RTSP sigue recorriendo el vídeo de origen. Para detener la canalización en directo, vuelva a la ventana TERMINAL y seleccione Entrar.
La siguiente serie de llamadas limpia los recursos:
- Una llamada a
livePipelineDeactivatedesactiva la canalización. - Una llamada a
livePipelineDeleteelimina la canalización. - Una llamada a
pipelineTopologyDeleteelimina la topología. - Una llamada final a
pipelineTopologyListmuestra que la lista está vacía.
- Una llamada a
Interpretación de los resultados
Cuando se ejecuta la canalización en directo, los resultados del nodo procesador del detector de movimiento recorren el nodo receptor de mensajes de IoT Hub hasta llegar al centro de IoT. Los mensajes que aparecen en la ventana de salida de Visual Studio Code contienen una sección body y una sección applicationProperties. Para más información, consulte Creación y lectura de mensajes de IoT Hub.
En los mensajes siguientes, el módulo perimetral de Video Analyzer define las propiedades de la aplicación y el contenido del cuerpo.
Evento MediaSessionEstablished
Cuando se activa una canalización en directo, el nodo de origen de RTSP intenta conectarse al servidor RTSP que se ejecuta en el contenedor rtspsim-live555. Si la conexión se realiza correctamente, se imprime el evento siguiente.
[IoTHubMonitor] [10:51:34 AM] Message received from [avasample-iot-edge-device/avaedge]:
{
"body": {
{
"sdp": "SDP:\nv=0\r\no=- 1620204694595500 1 IN IP4 xxx.xxx.xxx.xxx\r\ns=Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\ni=media/camera-300s.mkv\r\nt=0 0\r\na=tool:LIVE555 Streaming Media v2020.08.19\r\na=type:broadcast\r\na=control:*\r\na=range:npt=0-300.000\r\na=x-qt-text-nam:Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\na=x-qt-text-inf:media/camera-300s.mkv\r\nm=video 0 RTP/AVP 96\r\nc=IN IP4 0.0.0.0\r\nb=AS:500\r\na=rtpmap:96 H264/90000\r\na=fmtp:96 packetization-mode=1;profile-level-id=4D0029;sprop-parameter-sets=Z00AKeKQCgC3YC3AQEBpB4kRUA==,aO48gA==\r\na=control:track1\r\n"
},
"properties": {
"topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ava-sample-deployment/providers/Microsoft.Media/videoAnalyzers/avasample",
"subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sources/rtspSource",
"eventType": "Microsoft.VideoAnalyzer.Diagnostics.MediaSessionEstablished",
"eventTime": "2021-05-06T00:58:58.602Z",
"dataVersion": "1.0"
},
"systemProperties": {
"iothub-connection-device-id": "avasample-iot-edge-device",
"iothub-connection-module-id": "avaedge",
"iothub-message-source": "Telemetry",
"messageId": "459c3255-7c86-4ff5-a1e5-7ce3fcb07627",
"contentType": "application/json",
"contentEncoding": "utf-8"
}
}
En la salida anterior:
- El mensaje es un evento de diagnóstico, MediaSessionEstablished. Indica que el nodo de origen RTSP (el sujeto) ha conectado con el simulador RTSP y ha comenzado a recibir una fuente en directo (simulada).
- La sección sdp contiene datos sobre el evento de diagnóstico. En este caso, los datos incluyen detalles sobre el protocolo de descripción de sesiones (SDP).
Evento MotionDetection
Cuando se detecta movimiento, el módulo de Video Analyzer envía un evento de inferencia. El * *tipo se establece en motion para indicar que se trata de un resultado del procesador de detección del movimiento.
A continuación se muestra un ejemplo de este mensaje:
{
"body": {
"timestamp": 145818422564951,
"inferences": [
{
"type": "motion",
"motion": {
"box": {
"l": 0.322176,
"t": 0.574627,
"w": 0.525,
"h": 0.088889
}
}
}
]
},
"properties": { … },
"systemProperties": { … }
}
En este ejemplo:
El valor body son datos sobre el evento de análisis. En este caso, el evento es un evento de inferencia, por lo tanto, el valor body contiene datos de timestamp e inferences.
Los datos de inferences indican que el tipo es motion. Tiene datos adicionales sobre el evento motion.
La sección box contiene las coordenadas de un rectángulo delimitador alrededor del objeto en movimiento. Los valores se normalizan según el ancho y el alto del vídeo en píxeles. Por ejemplo, para obtener las coordenadas del píxel original, debe multiplicar las dimensiones horizontales por 1920 y las dimensiones verticales por 1080.
l - distance from left of image t - distance from top of image w - width of bounding box h - height of bounding box
Cuando se ejecuta la canalización en directo, los resultados del nodo procesador del detector de movimiento recorren el nodo receptor de mensajes de IoT Hub hasta llegar al centro de IoT. Los mensajes que aparecen en la ventana de salida de Visual Studio Code contienen una sección body y una sección applicationProperties. Para más información, consulte Creación y lectura de mensajes de IoT Hub.
En los mensajes siguientes, el módulo de Azure Video Analyzer define las propiedades de la aplicación y el contenido del cuerpo.
Evento MediaSessionEstablished
Cuando se activa una canalización en directo, el nodo de origen de RTSP intenta conectarse al servidor RTSP que se ejecuta en el contenedor rtspsim-live555. Si la conexión se realiza correctamente, se imprime el evento siguiente.
[IoTHubMonitor] [10:51:34 AM] Message received from [avasample-iot-edge-device/avaedge]:
{
"body": {
{
"sdp": "SDP:\nv=0\r\no=- 1620204694595500 1 IN IP4 xxx.xxx.xxx.xxx\r\ns=Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\ni=media/camera-300s.mkv\r\nt=0 0\r\na=tool:LIVE555 Streaming Media v2020.08.19\r\na=type:broadcast\r\na=control:*\r\na=range:npt=0-300.000\r\na=x-qt-text-nam:Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server\r\na=x-qt-text-inf:media/camera-300s.mkv\r\nm=video 0 RTP/AVP 96\r\nc=IN IP4 0.0.0.0\r\nb=AS:500\r\na=rtpmap:96 H264/90000\r\na=fmtp:96 packetization-mode=1;profile-level-id=4D0029;sprop-parameter-sets=Z00AKeKQCgC3YC3AQEBpB4kRUA==,aO48gA==\r\na=control:track1\r\n"
},
"properties": {
"topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ava-sample-deployment/providers/Microsoft.Media/videoAnalyzers/avasample",
"subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sources/rtspSource",
"eventType": "Microsoft.VideoAnalyzer.Diagnostics.MediaSessionEstablished",
"eventTime": "2021-05-06T00:58:58.602Z",
"dataVersion": "1.0"
},
"systemProperties": {
"iothub-connection-device-id": "avasample-iot-edge-device",
"iothub-connection-module-id": "avaedge",
"iothub-message-source": "Telemetry",
"messageId": "459c3255-7c86-4ff5-a1e5-7ce3fcb07627",
"contentType": "application/json",
"contentEncoding": "utf-8"
}
}
En la salida anterior:
- El mensaje es un evento de diagnóstico, MediaSessionEstablished. Indica que el nodo de origen RTSP (el sujeto) ha conectado con el simulador RTSP y ha comenzado a recibir una fuente en directo (simulada).
- La sección sdp contiene datos sobre el evento de diagnóstico. En este caso, los datos incluyen detalles sobre el protocolo de descripción de sesiones (SDP).
Evento MotionDetection
Cuando se detecta movimiento, el módulo de Video Analyzer envía un evento de inferencia. type se establece en motion para indicar que se trata de un resultado del procesador de detección del movimiento.
A continuación se muestra un ejemplo de este mensaje:
{
"body": {
"timestamp": 145818422564951,
"inferences": [
{
"type": "motion",
"motion": {
"box": {
"l": 0.322176,
"t": 0.574627,
"w": 0.525,
"h": 0.088889
}
}
}
]
},
"properties": { … },
"systemProperties": { … }
}
En este ejemplo:
El valor body son datos sobre el evento de análisis. En este caso, el evento es un evento de inferencia, por lo tanto, el valor body contiene datos de timestamp e inferences.
Los datos de inferences indican que el tipo es motion. Tiene datos adicionales sobre el evento motion.
La sección box contiene las coordenadas de un rectángulo delimitador alrededor del objeto en movimiento. Los valores se normalizan según el ancho y el alto del vídeo en píxeles. Por ejemplo, para obtener las coordenadas del píxel original, debe multiplicar las dimensiones horizontales por 1920 y las dimensiones verticales por 1080.
l - distance from left of image t - distance from top of image w - width of bounding box h - height of bounding box
Limpieza de recursos
Si su intención es probar los demás inicios rápidos, debería conservar los recursos creados. En caso contrario, en Azure Portal, vaya a los grupos de recursos, seleccione el grupo de recursos en el que ejecutó este inicio rápido y, a continuación, elimine todos los recursos.
Pasos siguientes
Siga las indicaciones del inicio rápido Análisis de vídeo en directo con su propio modelo para aplicar la inteligencia artificial a las fuentes de vídeo en directo.
Revise los desafíos adicionales para los usuarios avanzados:
- Use una cámara IP compatible con RTSP en lugar de utilizar el simulador RTSP. Puede encontrar cámaras IP compatibles con RTSP en la página de productos compatibles con ONVIF. Busque dispositivos que cumplan con los perfiles G, S o T.
- Use un dispositivo Linux AMD64 o x64 en lugar de usar una máquina virtual Linux en Azure. El dispositivo debe estar en la misma red que la cámara IP. Siga las instrucciones de Instalación del entorno de ejecución de Azure IoT Edge en Linux. A continuación, siga las instrucciones que se encuentran en Implementación del primer módulo IoT Edge en un dispositivo virtual Linux para registrar el dispositivo con Azure IoT Hub.