Inicio rápido: Detección de movimiento y emisión de eventos

icono de Edge
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.

Detección de movimiento

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.

Configuración de los recursos de Azure

Implementación en 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:

  1. 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.
  2. Cuenta de almacenamiento: para almacenar vídeo grabado y análisis de vídeo.
  3. Identidad administrada: es la identidad administrada asignada por el usuario que se usa para administrar el acceso a la cuenta de almacenamiento anterior.
  4. Máquina virtual: esta es una máquina virtual que actuará como su dispositivo perimetral simulado.
  5. 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

Azure Video Analyzer basado en la detección de movimiento

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

  1. Clone el repositorio de ejemplos de C# de AVA.

  2. Inicie Visual Studio Code y abra la carpeta en la que se descargó el repositorio.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  1. 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>

  2. 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:

  1. Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.

  2. Expanda el nodo Devices (Dispositivos).

  3. 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>

Obtención del código de ejemplo

  1. Clone el repositorio de ejemplos de Python de AVA.

  2. Inicie Visual Studio Code y abra la carpeta en la que se descargó el repositorio.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  1. 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>

  2. 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:

  1. Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.

  2. Expanda el nodo Devices (Dispositivos).

  3. 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>

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

  1. 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.

  2. 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.
  1. 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.

  2. 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.

  1. Abra Visual Studio Code.

  2. 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.

    Establecimiento de la cadena de conexión de IoT

    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>

  3. 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).

    Generación del 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.

  4. 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.

    Creación de una implementación para un dispositivo individual

  5. Cuando se le pida que seleccione un dispositivo IoT Hub, elija avasample-iot-edge-device en el menú contextual.

  6. 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)

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.

  1. Abra Visual Studio Code.

  2. 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.

    Establecimiento de la cadena de conexión de IoT

    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>

  3. 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).

    Generación del 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.

  4. 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.

    Creación de una implementación para un dispositivo individual

  5. Cuando se le pida que seleccione un dispositivo IoT Hub, elija avasample-iot-edge-device en el menú contextual.

  6. 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)

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:

  1. Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.

  2. Expanda el nodo Devices (Dispositivos).

  3. 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.

    Inicio de la supervisión de un 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:

  1. Abra el panel del explorador en Visual Studio Code y busque Azure IoT Hub en la esquina inferior izquierda.
  2. Expanda el nodo Devices (Dispositivos).
  3. 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.

Inicio de la supervisión de un 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:

  1. En Visual Studio Code, abra la pestaña Extensiones (o presione Ctrl + Mayús + X) y busque Azure IoT Hub.

  2. Haga clic con el botón derecho y seleccione la Configuración de la extensión.

    Configuración de la extensión

  3. Busque y habilite "Show Verbose Message" (Mostrar mensaje detallado).

    Show Verbose Message (Mostrar mensaje detallado)

  4. En Visual Studio Code, vaya a src/cloud-to-device-console-app/operations.json.

  5. 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"
    
  6. En los nodos livePipelineSet y livePipelineDelete, 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"

  7. Para iniciar una sesión de depuración, seleccione la tecla F5. La ventana TERMINAL mostrará algunos mensajes.

  8. El archivo operations.json se inicia con llamadas a pipelineTopologyList y livePipelineList. 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 pipelineTopologySet que utiliza el nodo pipelineTopologyUrl anterior.
    • Una llamada a livePipelineSet que 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 livePipelineActivate que activa la canalización en directo y el flujo de vídeo.
    • Una segunda llamada a livePipelineList que muestra que la canalización en directo está en estado de ejecución.
  9. 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.

  10. 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.

  11. 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 livePipelineDeactivate desactiva la canalización.
    • Una llamada a livePipelineDelete elimina la canalización.
    • Una llamada a pipelineTopologyDelete elimina la topología.
    • Una llamada final a pipelineTopologyList muestra que la lista está vacía.

Para ejecutar el código de ejemplo, siga estos pasos:

  1. En Visual Studio Code, abra la pestaña Extensiones (o presione Ctrl + Mayús + X) y busque Azure IoT Hub.

  2. Haga clic con el botón derecho y seleccione la Configuración de la extensión.

    Configuración de la extensión

  3. Busque y habilite "Show Verbose Message" (Mostrar mensaje detallado).

    Show Verbose Message (Mostrar mensaje detallado)

  4. En Visual Studio Code, vaya a src/cloud-to-device-console-app/operations.json.

  5. 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"
    
  6. En los nodos livePipelineSet y livePipelineDelete, 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 TERMINAL en 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
  7. El archivo operations.json se inicia con llamadas a pipelineTopologyList y livePipelineList. 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 pipelineTopologySet que utiliza el nodo pipelineTopologyUrl anterior.
    • Una llamada a livePipelineSet que 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 livePipelineActivate que activa la canalización en directo y el flujo de vídeo.
    • Una segunda llamada a livePipelineList que muestra que la canalización en directo está en estado de ejecución.
  8. 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.

  9. 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.

  10. 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 livePipelineDeactivate desactiva la canalización.
    • Una llamada a livePipelineDelete elimina la canalización.
    • Una llamada a pipelineTopologyDelete elimina la topología.
    • Una llamada final a pipelineTopologyList muestra que la lista está vací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&quot;: &quot;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&quot;: &quot;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