Snabbstart: Identifiera rörelse och generera händelser
![]()
Du kan också läsa avsnitten under Skapa videoprogram i tjänsten.
Den här snabbstarten går igenom stegen för att komma igång med Azure Video Analyzer. Den använder en virtuell Azure-dator som en IoT Edge-enhet och en simulerad livevideoström. När du har slutfört installationsstegen kan du köra en simulerad direktsänd videoström via en videopipeline som identifierar och rapporterar alla rörelser i strömmen. Följande diagram visar en grafisk representation av pipelinen.
Den här artikeln baseras på exempelkod som skrivits i C#.
Den här artikeln baseras på exempelkod som skrivits i Python.
Förutsättningar
Ett Azure-konto som innehåller en aktiv prenumeration. Skapa ett konto kostnadsfritt om du inte redan har ett.
Anteckning
Du behöver en Azure-prenumeration där du har åtkomst till både rollen Deltagare och Administratör för användaråtkomst. Om du inte har rätt behörigheter kan du kontakta din kontoadministratör för att ge dig dessa behörigheter.
Visual Studio kodmed följande tillägg:
Tips
När du installerar Azure IoT Tools kan du uppmanas att installera Docker. Du kan ignorera uppmaningen.
Ett Azure-konto som innehåller en aktiv prenumeration. Skapa ett konto kostnadsfritt om du inte redan har ett.
Anteckning
Du behöver en Azure-prenumeration där du har åtkomst till både rollen Deltagare och Administratör för användaråtkomst. Om du inte har rätt behörigheter kan du kontakta din kontoadministratör för att ge dig dessa behörigheter.
Visual Studio kodmed följande tillägg:
Tips
När du installerar Azure IoT Tools kan du uppmanas att installera Docker. Du kan ignorera uppmaningen.
Ställa in Azure-resurser
Distributionsprocessen tar cirka 20 minuter. När det är klart har du vissa Azure-resurser distribuerade i Azure-prenumerationen, inklusive:
- Video Analyzer-konto – Den här molntjänsten används för att registrera Video Analyzer Edge-modulen och för att spela upp inspelade video- och videoanalyser.
- Storage konto – för lagring av inspelade video- och videoanalyser.
- Hanterad identitet – Det här är den användar tilldelade hanterade identiteten som används för att hantera åtkomsten till lagringskontot ovan.
- Virtuell dator – Det här är en virtuell dator som fungerar som din simulerade gränsenhet.
- IoT Hub – Det här fungerar som en central meddelandehubb för dubbelriktad kommunikation mellan ditt IoT-program, IoT Edge-moduler och de enheter som det hanterar.
Förutom de resurser som nämns ovan skapas även följande objekt i filresursen "deployment-output" i ditt lagringskonto för användning i snabbstarter och självstudier:
- appsettings.json – Den här filen innehåller enhetsanslutningssträngen och andra egenskaper som behövs för att köra exempelprogrammet i Visual Studio Code.
- env.txt – Den här filen innehåller de miljövariabler som du behöver för att generera distributionsmanifest med Visual Studio Code.
- deployment.json – Det här är det distributionsmanifest som används av mallen för att distribuera edge-moduler till den simulerade gränsenhet.
Tips
Om du får problem med att skapa alla nödvändiga Azure-resurser använder du de manuella stegen i den här snabbstarten.
Översikt

Det här diagrammet visar hur signalen flödar i den här snabbstarten. En edge-modul simulerar en IP-kamera som är värd Real-Time RTSP-server (Streaming Protocol). En RTSP-källnod hämtar videofeeden från den här servern och skickar bildrutor till noden för rörelseidentifieringsprocessorn. Med noden för rörelseidentifieringsprocessorn kan du identifiera rörelse i direktsänd video. Den undersöker inkommande bildrutor och avgör om videon rör sig. Om rörelse identifieras skickar den vidare videoramen till nästa nod i pipelinen och ger en händelse. Slutligen skickas alla utgivna händelser till IoT Hub-meddelande mottagare där de publiceras till IoT Hub.
Ställt in din utvecklingsmiljö
Hämta exempelkoden
Starta Visual Studio Code och öppna mappen där lagringsplatsen har laddats ned.
I Visual Studio Code bläddrar du till mappen src/cloud-to-device-console-app och skapar en fil med namnet appsettings.json. Den här filen innehåller de inställningar som krävs för att köra programmet.
Bläddra till filresursen i lagringskontot som skapades i konfigurationssteget ovan och leta upp filen appsettings.json under filresursen "deployment-output". Klicka på filen och tryck sedan på knappen "Ladda ned". Innehållet ska öppnas i en ny webbläsarflik, som bör se ut så här:
{ "IoThubConnectionString" : "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX", "deviceId" : "avasample-iot-edge-device", "moduleId" : "avaedge" }Med IoT Hub anslutningssträngen kan du använda Visual Studio Code för att skicka kommandon till gränsmodulerna via Azure IoT Hub. Kopiera ovanstående JSON till filen src/cloud-to-device-console-app/appsettings.json.
Bläddra sedan till mappen src/edge och skapa en fil med namnet .env. Den här filen innehåller egenskaper som Visual Studio Code använder för att distribuera moduler till en gränsenhet.
Bläddra till filresursen i lagringskontot som skapades i konfigurationssteget ovan och leta uppenv.txt under filresursen "deployment-output". Klicka på filen och tryck sedan på knappen "Ladda ned". Innehållet ska öppnas i en ny webbläsarflik, som bör se ut så här:
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>"Kopiera JSON från din env.txt till filen src/edge/.env.
Anslut till IoT Hub
I Visual Studio Code anger du IoT Hub anslutningssträngen genom att välja ikonen Fler åtgärder bredvid fönstret AZURE IOT HUB i det nedre vänstra hörnet. Kopiera strängen från filen src/cloud-to-device-console-app/appsettings.json.
Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Om cirka 30 sekunder uppdaterar Azure IoT Hub i det nedre vänstra avsnittet. Du bör se gränsenhet
avasample-iot-edge-device, som bör ha följande moduler distribuerade:- Edge Hub (modulnamnet edgeHub)
- Edge-agent (modulnamnet edgeAgent)
- Video Analyzer (modulnamnet avaedge)
- RTSP-simulator (modulnamn rtspsim)
Förbereda för att övervaka modulerna
När du använder kör den här snabbstarten eller självstudien skickas händelser till IoT Hub. Följ dessa steg om du vill se dessa händelser:
Öppna Explorer-fönstret i Visual Studio Code och leta efter Azure IoT Hub i det nedre vänstra hörnet.
Expandera noden Enheter.
Högerklicka på och
avasample-iot-edge-devicevälj Starta övervakning av inbyggd händelseslutpunkt.Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Hämta exempelkoden
Starta Visual Studio Code och öppna mappen där lagringsplatsen har laddats ned.
I Visual Studio Code bläddrar du till mappen src/cloud-to-device-console-app och skapar en fil med namnet appsettings.json. Den här filen innehåller de inställningar som krävs för att köra programmet.
Bläddra till filresursen i lagringskontot som skapades i konfigurationssteget ovan och leta upp filen appsettings.json under filresursen "deployment-output". Klicka på filen och tryck sedan på knappen "Ladda ned". Innehållet ska öppnas i en ny webbläsarflik, som bör se ut så här:
{ "IoThubConnectionString": "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX", "deviceId": "avasample-iot-edge-device", "moduleId": "avaedge" }Med IoT Hub anslutningssträngen kan du använda Visual Studio Code för att skicka kommandon till gränsmodulerna via Azure IoT Hub. Kopiera ovanstående JSON till filen src/cloud-to-device-console-app/appsettings.json.
Bläddra sedan till mappen src/edge och skapa en fil med namnet .env. Den här filen innehåller egenskaper som Visual Studio Code använder för att distribuera moduler till en gränsenhet.
Bläddra till filresursen i lagringskontot som skapades i konfigurationssteget ovan och leta uppenv.txt under filresursen "deployment-output". Klicka på filen och tryck sedan på knappen "Ladda ned". Innehållet ska öppnas i en ny webbläsarflik, som bör se ut så här:
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>"Kopiera JSON från din env.txt till filen src/edge/.env.
Anslut till IoT Hub
I Visual Studio Code anger du IoT Hub anslutningssträngen genom att välja ikonen Fler åtgärder bredvid fönstret AZURE IOT HUB i det nedre vänstra hörnet. Kopiera strängen från filen src/cloud-to-device-console-app/appsettings.json.
Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Om cirka 30 sekunder uppdaterar Azure IoT Hub i det nedre vänstra avsnittet. Du bör se gränsenhet
avasample-iot-edge-device, som bör ha följande moduler distribuerade:- Edge Hub (modulnamnet edgeHub)
- Edge-agent (modulnamnet edgeAgent)
- Video Analyzer (modulnamnet avaedge)
- RTSP-simulator (modulnamn rtspsim)
Förbereda för att övervaka modulerna
När du använder kör den här snabbstarten eller självstudien skickas händelser till IoT Hub. Följ dessa steg om du vill se dessa händelser:
Öppna Explorer-fönstret i Visual Studio Code och leta efter Azure IoT Hub i det nedre vänstra hörnet.
Expandera noden Enheter.
Högerklicka på och
avasample-iot-edge-devicevälj Starta övervakning av inbyggd händelseslutpunkt.Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Granska exempelvideon
När du ställer in Azure-resurserna kopieras en kort video med motorvägstrafik till den virtuella Linux-datorn i Azure som du använder som IoT Edge enhet. Den här snabbstarten använder videofilen för att simulera en liveström.
Öppna ett program, till exempel VLC Media Player. Välj Ctrl +N och klistra sedan in en länk till exempelvideon för motorvägsskärningspunkten för att starta uppspelningen. Du ser filmsekvenser av många fordon som rör sig i vägtrafik.
När du ställer in Azure-resurserna kopieras en kort video med motorvägstrafik till den virtuella Linux-datorn i Azure som du använder som IoT Edge enhet. Den här snabbstarten använder videofilen för att simulera en liveström.
Öppna ett program, till exempel VLC Media Player. Välj Ctrl +N och klistra sedan in en länk till exempelvideon för motorvägsskärningspunkten för att starta uppspelningen. Du ser filmsekvenser av många fordon som rör sig i vägtrafik.
Granska exempelfilerna
I Visual Studio Code går du till src/edge. Du ser .env-filen och några distributionsmallfiler.
Distributionsmallen refererar till distributionsmanifestet för gränsenhet, där variabler används för vissa egenskaper. .env-filen innehåller värdena för dessa variabler.
Gå till mappen src/cloud-to-device-console-app. Här ser du filen appsettings.json och några andra filer:
c2d-console-app.csproj – Projektfilen för Visual Studio Code.
operations.json – En lista över de åtgärder som du vill att programmet ska köra.
Program.cs – Exempelprogrammets kod. Den här koden:
- Läser in appinställningarna.
- Anropar direktmetoder som exponeras av Video Analyzer Edge-modulen. Du kan använda modulen för att analysera livevideoströmmar genom att använda dess direktmetoder.
- Pausar så att du kan granska programmets utdata i TERMINAL-fönstret och granska de händelser som genereras av modulen i utdatafönstret.
- Anropar direkta metoder för att rensa resurser.
I Visual Studio Code går du till src/edge. Du ser .env-filen och några distributionsmallfiler.
Distributionsmallen refererar till distributionsmanifestet för gränsenhet, där variabler används för vissa egenskaper. .env-filen innehåller värdena för dessa variabler.
Gå till mappen src/cloud-to-device-console-app. Här ser du filen appsettings.json och några andra filer:
operations.json – En lista över de åtgärder som du vill att programmet ska köra.
main.py – Exempelprogrammets kod. Den här koden:
- Läser in appinställningarna.
- Anropar direktmetoder som exponeras av Azure Video Analyzer-modulen. Du kan använda modulen för att analysera livevideoströmmar genom att använda dess direktmetoder.
- Pausar så att du kan granska programmets utdata i TERMINAL-fönstret och granska de händelser som genereras av modulen i utdatafönstret.
- Anropar direkta metoder för att rensa resurser.
Generera och distribuera distributionsmanifestet
Distributionsmanifestet definierar vilka moduler som distribueras till en gränsenhet. Den definierar också konfigurationsinställningar för dessa moduler.
Följ dessa steg för att generera manifestet från mallfilen och distribuera det sedan till gränsenhet.
Öppna Visual Studio Code.
Bredvid fönstret AZURE IOT HUB väljer du ikonen Fler åtgärder för att ange IoT Hub anslutningssträngen. Du kan kopiera strängen från filen src/cloud-to-device-console-app/appsettings.json.

Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Högerklicka på src/edge/deployment.template.json och välj Generate IoT Edge Deployment Manifest (Generera distributionsmanifest).

Den här åtgärden ska skapa en manifestfil med namnet deployment.amd64.json i mappen src/edge/config.
Högerklicka på src/edge/config/deployment.amd64.json, välj Skapa distribution för enskild enhet och välj sedan namnet på din gränsenhet.

När du uppmanas att välja en IoT Hub enhet väljer du avasample-iot-edge-device i listrutan.
Efter cirka 30 sekunder går du till fönstrets nedre vänstra hörn och uppdaterar Azure IoT Hub. Gränsenhet visar nu följande distribuerade moduler:
- Video Analyzer Edge-modul (modulnamn
avaedge) - Real-Time RTSP-simulator
rtspsim(modulnamn)
- Video Analyzer Edge-modul (modulnamn
Distributionsmanifestet definierar vilka moduler som distribueras till en gränsenhet. Den definierar även konfigurationsinställningar för dessa moduler.
Följ de här stegen för att generera manifestet från mallfilen och distribuera det sedan till gränsenhet.
Öppna Visual Studio Code.
Bredvid fönstret AZURE IOT HUB väljer du ikonen Fler åtgärder för att ange IoT Hub anslutningssträngen. Du kan kopiera strängen från filen src/cloud-to-device-console-app/appsettings.json.

Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Högerklicka på src/edge/deployment.template.json och välj Generate IoT Edge Deployment Manifest (Generera distributionsmanifest).

Den här åtgärden ska skapa en manifestfil med namnet deployment.amd64.json i mappen src/edge/config.
Högerklicka på src/edge/config/deployment.amd64.json, välj Skapa distribution för enskild enhet och välj sedan namnet på din gränsenhet.

När du uppmanas att välja en IoT Hub enhet väljer du avasample-iot-edge-device i listrutan.
Efter cirka 30 sekunder går du till det nedre vänstra hörnet i fönstret och uppdaterar Azure IoT Hub. Gränsenheterna visar nu följande distribuerade moduler:
- Azure Video Analyzer
avaedge(modulnamn) - Real-Time RTSP-simulator
rtspsim(modulnamn)
- Azure Video Analyzer
Förbereda för att övervaka händelser
Du använder Video Analyzer Edge-modulen för att identifiera rörelse i den inkommande direktsända videoströmmen och skicka händelser till IoT Hub. Följ dessa steg om du vill se dessa händelser:
Öppna Explorer-fönstret i Visual Studio Code och leta efter Azure IoT Hub i det nedre vänstra hörnet.
Expandera noden Enheter.
Högerklicka på avasample-iot-edge-device och välj Starta övervakning av inbyggd händelseslutpunkt.

Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Du kommer att använda Azure Video Analyzer-modulen för att identifiera rörelse i den inkommande direktsänd videoströmmen och skicka händelser till IoT Hub. Följ dessa steg om du vill se dessa händelser:
- Öppna Explorer-fönstret i Visual Studio Code och leta Azure IoT Hub i det nedre vänstra hörnet.
- Expandera noden Enheter.
- Högerklicka på avasample-iot-edge-device och välj Start Monitoring Built-in Event Endpoint (Starta övervakning av inbyggd händelseslutpunkt).

Anteckning
Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. För att få den informationen går Azure Portal till ditt IoT Hub och letar efter alternativet Inbyggda slutpunkter i det vänstra navigeringsfönstret. Klicka där och leta efter den Event Hub-kompatibla slutpunkten under avsnittet Event Hub compatible endpoint (Händelsehubbkompatibel slutpunkt). Kopiera och använd texten i rutan. Slutpunkten ser ut ungefär så här: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Kör exempelprogrammet
Följ dessa steg för att köra exempelkoden:
I Visual Studio Kod öppnar du fliken Tillägg (eller trycker på Ctrl+Skift+X) och söker efter Azure IoT Hub.
Högerklicka och välj Extension Inställningar.
Sök och aktivera "Visa utförligt meddelande".
I Visual Studio Code går du till src/cloud-to-device-console-app/operations.json.
Kontrollera att du ser följande värde på noden pipelineTopologySet:
"pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"På
livePipelineSetnodernalivePipelineDeleteoch ser du till att värdet för topologyName matchar värdet för namnegenskapen i pipelinetopologin:"topologyName" : "MotionDetection"Starta en felsökningssession genom att välja F5-tangenten. Vissa meddelanden visas i TERMINAL-fönstret.
Filen operations.json börjar med anrop till
pipelineTopologyListochlivePipelineList. Om du rensade resurser när du var klar med föregående snabbstarter returnerar den här processen tomma listor.----------------------- Request: pipelineTopologyList -------------------------------------------------- { "@apiVersion": "1.1" } --------------- Response: pipelineTopologyList - Status: 200 --------------- { "value": [] } --------------------------------------------------------------------------I terminalfönstret visas nästa uppsättning direkta metod-anrop:
- Ett anrop
pipelineTopologySettill som använder föregående pipelineTopologyUrl - Ett anrop
livePipelineSettill som använder följande text:
{ "@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" } ] } }- Ett anrop
livePipelineActivatetill som startar live-pipelinen och flödet av video. - Ett andra anrop
livePipelineListtill som visar att live-pipelinen är i körningstillstånd.
- Ett anrop
Utdata i TERMINAL-fönstret pausas vid
Press Enter to continue. Välj inte Retur ännu. Rulla uppåt för att se JSON-svarsnyttolaster för de direktmetoder som du anropade.Växla till fönstret UTDATA i Visual Studio Code. Du ser meddelanden som Video Analyzer Edge-modulen skickar till IoT-hubben. I följande avsnitt i den här snabbstarten beskrivs dessa meddelanden.
Live-pipelinen fortsätter att köra och skriva ut resultat. RTSP-simulatorn fortsätter att loopa källvideon. Om du vill stoppa live-pipelinen går du tillbaka till TERMINAL-fönstret och väljer Retur.
Nästa serie med anrop rensar resurser:
- Ett anrop
livePipelineDeactivatetill inaktiverar pipelinen. - Ett anrop
livePipelineDeletetill tar bort pipelinen. - Ett anrop
pipelineTopologyDeletetill tar bort topologin. - Ett sista anrop
pipelineTopologyListtill visar att listan är tom.
- Ett anrop
Följ dessa steg för att köra exempelkoden:
I Visual Studio Kod öppnar du fliken Tillägg (eller trycker på Ctrl+Skift+X) och söker efter Azure IoT Hub.
Högerklicka och välj Extension Inställningar.
Sök och aktivera "Visa utförligt meddelande".
I Visual Studio Code går du till src/cloud-to-device-console-app/operations.json.
Kontrollera
pipelineTopologySetatt du ser följande värde på noden:"pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"På
livePipelineSetnodernalivePipelineDeleteoch ser du till att värdet för topologyName matchar värdet för namnegenskapen i pipelinetopologin:"topologyName" : "MotionDetection"-
- Navigera till
TERMINALfönstret i VS Code - Använd cd-kommandot för att navigera till katalogen /video-analyzer-iot-edge-python-main/src/cloud-to-device-console-app
- Kör "python main.py" så ser du meddelanden som skrivs ut i
TERMINALfönstret
- Navigera till
Filen operations.json börjar med anrop till
pipelineTopologyListochlivePipelineList. Om du rensade resurser när du var klar med föregående snabbstarter returnerar den här processen tomma listor.----------------------- Request: pipelineTopologyList -------------------------------------------------- { "@apiVersion": "1.1" } --------------- Response: pipelineTopologyList - Status: 200 --------------- { "value": [] } --------------------------------------------------------------------------I terminalfönstret visas nästa uppsättning direkta metod-anrop:
- Ett anrop
pipelineTopologySettill som använder föregående pipelineTopologyUrl - Ett anrop
livePipelineSettill som använder följande text:
{ "@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" } ] } }- Ett anrop
livePipelineActivatetill som startar live-pipelinen och flödet av video. - Ett andra anrop
livePipelineListtill som visar att live-pipelinen är i körningstillstånd.
- Ett anrop
Utdata i TERMINAL-fönstret pausas vid
Press Enter to continue. Välj inte Retur ännu. Rulla uppåt för att se JSON-svarsnyttolaster för de direktmetoder som du anropade.Växla till utdatafönstret i Visual Studio Code. Du ser meddelanden som Azure Video Analyzer-modulen skickar till IoT-hubben. I följande avsnitt i den här snabbstarten beskrivs dessa meddelanden.
Live-pipelinen fortsätter att köra och skriva ut resultat. RTSP-simulatorn fortsätter att loopa källvideon. Om du vill stoppa live-pipelinen går du tillbaka till terminalfönstret och väljer Retur.
Nästa serie med anrop rensar resurser:
- Ett anrop
livePipelineDeactivatetill inaktiverar pipelinen. - Ett anrop
livePipelineDeletetill tar bort pipelinen. - Ett anrop
pipelineTopologyDeletetill tar bort topologin. - Ett sista anrop
pipelineTopologyListtill visar att listan är tom.
- Ett anrop
Tolka resultaten
När du kör live-pipelinen passerar resultatet från noden för rörelsedetektorprocessorn IoT Hub noden för meddelanden till IoT-hubben. De meddelanden som visas i utdatafönstret i Visual Studio Code innehåller ett brödtextavsnitt och ett applicationProperties-avsnitt. Mer information finns i Skapa och läsa IoT Hub meddelanden.
I följande meddelanden definierar Video Analyzer Edge-modulen programegenskaperna och innehållet i brödtexten.
MediaSessionEstablished-händelse
När en live-pipeline aktiveras försöker RTSP-källnoden ansluta till RTSP-servern som körs på containern rtspsim-live555. Om anslutningen lyckas skrivs följande händelse ut.
[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"
}
}
I föregående utdata:
- Meddelandet är en diagnostikhändelse, MediaSessionEstablished. Det anger att RTSP-källnoden (ämnet) som är ansluten till RTSP-simulatorn och har börjat ta emot en (simulerad) live-feed.
- Avsnittet sdp innehåller data om diagnostikhändelsen. I det här fallet består data av SDP-information (Session Description Protocol).
MotionDetection-händelse
När rörelse identifieras skickar Video Analyzer-modulen en slutsatsledningshändelse. Typen * * är inställd på rörelse för att indikera att det är ett resultat från rörelseidentifieringsprocessorn.
Här är ett exempel på det här meddelandet:
{
"body": {
"timestamp": 145818422564951,
"inferences": [
{
"type": "motion",
"motion": {
"box": {
"l": 0.322176,
"t": 0.574627,
"w": 0.525,
"h": 0.088889
}
}
}
]
},
"properties": { … },
"systemProperties": { … }
}
I det här exemplet:
Brödtextvärdet är data om analyshändelsen. I det här fallet är händelsen en härledningshändelse, så brödtexten innehåller tidsstämpel- och slutsatsledningsdata.
Inferensdata anger att typen är rörelse. Den har ytterligare data om den rörelsehändelsen.
Box-avsnittet innehåller koordinaterna för en avgränsare runt det flyttande objektet. Värdena normaliseras med videons bredd och höjd, i bildpunkter. Om du till exempel vill hämta de ursprungliga pixelkoordinaterna multiplicerar du de vågräta dimensionerna med 1920 och de lodräta dimensionerna med 1080.
l - distance from left of image t - distance from top of image w - width of bounding box h - height of bounding box
När du kör live-pipelinen passerar resultatet från processornoden för rörelsedetektorn IoT Hub till IoT-hubben. De meddelanden som visas i utdatafönstret i Visual Studio Code innehåller ett avsnitt med brödtext och ett applicationProperties-avsnitt. Mer information finns i Skapa och läsa IoT Hub meddelanden.
I följande meddelanden definierar Modulen Azure Video Analyzer programegenskaperna och innehållet i brödtexten.
MediaSessionEstablished-händelse
När en live-pipeline aktiveras försöker RTSP-källnoden ansluta till RTSP-servern som körs på rtspsim-live555-containern. Om anslutningen lyckas skrivs följande händelse ut.
[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"
}
}
I föregående utdata:
- Meddelandet är en diagnostikhändelse, MediaSessionEstablished. Det anger att RTSP-källnoden (ämnet) som är ansluten till RTSP-simulatorn och har börjat ta emot en (simulerad) live-feed.
- SDP-avsnittet innehåller data om diagnostikhändelsen. I det här fallet består data av SDP-information (Session Description Protocol).
MotionDetection-händelse
När rörelse identifieras skickar Video Analyzer-modulen en slutsatsledningshändelse. Typen är inställd på rörelse för att indikera att det är ett resultat från rörelseidentifieringsprocessorn.
Här är ett exempel på det här meddelandet:
{
"body": {
"timestamp": 145818422564951,
"inferences": [
{
"type": "motion",
"motion": {
"box": {
"l": 0.322176,
"t": 0.574627,
"w": 0.525,
"h": 0.088889
}
}
}
]
},
"properties": { … },
"systemProperties": { … }
}
I det här exemplet:
Brödtextvärdet är data om analyshändelsen. I det här fallet är händelsen en härledningshändelse, så brödtexten innehåller tidsstämpel- och slutsatsledningsdata.
Inferensdata anger att typen är rörelse. Den har ytterligare data om den rörelsehändelsen.
Box-avsnittet innehåller koordinaterna för en avgränsare runt objektet som flyttas. Värdena normaliseras av videons bredd och höjd, i bildpunkter. Om du till exempel vill hämta de ursprungliga pixelkoordinaterna multiplicerar du de vågräta dimensionerna med 1920 och de lodräta dimensionerna med 1080.
l - distance from left of image t - distance from top of image w - width of bounding box h - height of bounding box
Rensa resurser
Om du vill prova de andra snabbstarterna bör du behålla de resurser som du har skapat. Annars går Azure Portal till dina resursgrupper, väljer den resursgrupp där du körde den här snabbstarten och tar sedan bort alla resurser.
Nästa steg
Följ snabbstarten Analysera livevideo med din egen modell för att tillämpa AI på livevideofeeds.
Granska ytterligare utmaningar för avancerade användare:
- Använd en IP-kamera som stöder RTSP i stället för att använda RTSP-simulatorn. Du hittar IP-kameror som stöder RTSP på sidan om ONVIF-överensstämmande produkter. Leta efter enheter som överensstämmer med profilerna G, S eller T.
- Använd en AMD64- eller x64 Linux-enhet i stället för att använda en virtuell Linux-dator i Azure. Enheten måste finnas i samma nätverk som IP-kameran. Följ instruktionerna i Install Azure IoT Edge runtime on Linux (Installera Azure IoT Edge på Linux). Följ sedan anvisningarna i Distribuera din första IoT Edge-modul till en virtuell Linux-enhet och registrera enheten med Azure IoT Hub.