Quickstart: Beweging detecteren en gebeurtenissen verzenden
![]()
U kunt ook de onderwerpen bekijken onder Videotoepassingen maken in de service.
In deze quickstart doorloopt u de stappen om aan de slag te gaan met Azure Video Analyzer. In het artikel worden Azure-VM als IoT Edge-apparaat gebruikt en wordt een gesimuleerde live videostream gebruikt. Nadat u de installatiestappen hebt uitgevoerd, kunt u een gesimuleerde livevideostream uitvoeren via een videopijplijn die beweging in die stream detecteert en rapporteert. In het volgende diagram ziet u een grafische weergave van die pijplijn.
Dit artikel is gebaseerd op voorbeeldcode geschreven in C#.
Dit artikel is gebaseerd op voorbeeldcode die is geschreven in Python.
Vereisten
Een Azure-account met een actief abonnement. Maak gratis een account als u er nog geen hebt.
Notitie
U hebt een Azure-abonnement nodig waarin u toegang hebt tot zowel de rol Inzender als de rol Gebruikerstoegangbeheerder. Als u niet de juiste machtigingen hebt, neem dan contact op met de accountbeheerder om u deze machtigingen te verlenen.
Visual Studio Code met de volgende extensies:
Tip
Wanneer u de extensie Azure IoT Tools, wordt u mogelijk gevraagd om Docker te installeren. U mag dit negeren.
Een Azure-account met een actief abonnement. Maak gratis een account als u nog geen account hebt.
Notitie
U hebt een Azure-abonnement nodig waarin u toegang hebt tot zowel de rol Inzender als de rol Gebruikerstoegangbeheerder. Als u niet de juiste machtigingen hebt, neem dan contact op met de accountbeheerder om u deze machtigingen te verlenen.
Visual Studio Code met de volgende extensies:
Tip
Wanneer u de extensie Azure IoT Tools, wordt u mogelijk gevraagd om Docker te installeren. U mag dit negeren.
Azure-resources instellen
Het implementatieproces duurt ongeveer 20 minuten. Na voltooiing hebt u bepaalde Azure-resources geïmplementeerd in het Azure-abonnement, waaronder:
- Video Analyzer-account: deze cloudservice wordt gebruikt om de Video Analyzer Edge-module te registreren en om opgenomen video- en videoanalyses af te spelen.
- Storage-account: voor het opslaan van opgenomen video en videoanalyse.
- Beheerde identiteit: dit is de door de gebruiker toegewezen beheerde identiteit die wordt gebruikt voor het beheren van de toegang tot het bovenstaande opslagaccount.
- Virtuele machine: dit is een virtuele machine die als uw gesimuleerde edge-apparaat zal fungeren.
- IoT Hub: dit fungeert als een centrale berichtenhub voor bi-directionele communicatie tussen uw IoT-toepassing, IoT Edge modules en de apparaten die verantwoordelijk zijn voor het beheer.
Naast de hierboven genoemde resources worden de volgende items ook gemaakt in de bestands share 'deployment-output' in uw opslagaccount, voor gebruik in quickstarts en zelfstudies:
- appsettings.json: dit bestand bevat de apparaat-connection string en andere eigenschappen die nodig zijn om de voorbeeldtoepassing uit te voeren in Visual Studio Code.
- env.txt: dit bestand bevat de omgevingsvariabelen die u nodig hebt om implementatiemanifests te genereren met behulp Visual Studio Code.
- deployment.json: dit is het implementatiemanifest dat door de sjabloon wordt gebruikt om edge-modules te implementeren op het gesimuleerde edge-apparaat.
Tip
Als u problemen hebt met het maken van alle vereiste Azure-resources, gebruikt u de handmatige stappen in deze quickstart.
Overzicht

In dit diagram ziet u hoe het signaal in deze quickstart stroomt. Een Edge-module simuleert een IP-camera die als host fungeert voor een RTSP-server (Real-Time Streaming Protocol). Een RTSP-bronknooppunt haalt de video-feed van deze server, en verstuurt videoframes naar het knooppunt van de bewegingsdetectieprocessor. Met het knooppunt van de bewegingsdetectieprocessor kunt u beweging in live video detecteren. Het onderzoekt binnenkomende videoframes en bepaalt of er beweging in de video is. Als er beweging wordt gedetecteerd, wordt het videoframe door geven aan het volgende knooppunt in de pijplijn en wordt een gebeurtenis. Ten slotte worden verzonden gebeurtenissen verzonden naar de berichten-sink van de IoT-hub waar ze worden gepubliceerd naar IoT Hub.
De ontwikkelomgeving instellen
De voorbeeldcode halen
Kloon de opslagplaats met AVA C#-voorbeelden.
Start Visual Studio Code en open de map waarin de repo is gedownload.
In Visual Studio Code bladert u naar de map src/cloud-to-device-console-app en maakt u een bestand met de naam appsettings.json. Dit bestand bevat de instellingen die nodig zijn om het programma uit te voeren.
Blader naar de bestands share in het opslagaccount dat u hebt gemaakt in de bovenstaande installatiestap en zoek het bestand appsettings.json onder de bestands share deployment-output. Klik op het bestand en klik vervolgens op de knop Downloaden. De inhoud moet worden geopend in een nieuw browsertabblad, dat er als het volgende uit moet zien:
{ "IoThubConnectionString" : "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX", "deviceId" : "avasample-iot-edge-device", "moduleId" : "avaedge" }Met de IoT Hub-verbindingsreeks kunt u Visual Studio Code gebruiken om opdrachten naar de Edge-modules te verzenden via Azure IoT Hub. Kopieer de bovenstaande JSON naar het bestand src/cloud-to-device-console-app/appsettings.json.
Blader vervolgens naar de map src/edge en maak een bestand met de extensie .env. Dit bestand bevat eigenschappen die Visual Studio Code gebruikt om modules te implementeren op een edge-apparaat.
Blader naar de bestands share in het opslagaccount dat u hebt gemaakt in de bovenstaande installatiestap en zoek het env.txt-bestand onder de bestands share 'deployment-output'. Klik op het bestand en klik vervolgens op de knop Downloaden. De inhoud moet worden geopend in een nieuw browsertabblad, dat er als het volgende uit moet zien:
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>"Kopieer de JSON van uw env.txt naar het bestand src/edge/.env.
Verbinding maken aan de IoT Hub
In Visual Studio Code stelt u de IoT Hub connection string in door het pictogram Meer acties naast het deelvenster AZURE IOT HUB in de linkerbenedenhoek te selecteren. Kopieer de tekenreeks vanuit het bestand src/cloud-to-device-console-app/appsettings.json.
Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Vernieuw Azure IoT Hub in ongeveer 30 seconden in de sectie linksonder. Als het goed is, ziet u het
avasample-iot-edge-deviceedge-apparaat, waarop de volgende modules moeten zijn geïmplementeerd:- Edge Hub (modulenaam edgeHub)
- Edge Agent (modulenaam edgeAgent)
- Video Analyzer (modulenaam avaedge)
- RTSP-simulator (modulenaam rtspsim)
Het bewaken van de modules voorbereiden
Wanneer u deze quickstart of zelfstudie gebruikt, worden er gebeurtenissen verzonden naar de IoT Hub. Volg deze stappen om deze gebeurtenissen te bekijken:
Open het deelvenster Explorer in Visual Studio Code en zoek Azure IoT Hub in de linkerbenedenhoek.
Vouw het knooppunt Apparaten uit.
Klik met de rechtermuisknop op
avasample-iot-edge-deviceen selecteer Bewaking van ingebouwd gebeurtenis-eindpunt starten.Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
De voorbeeldcode halen
Start Visual Studio Code en open de map waarin de repo is gedownload.
In Visual Studio Code bladert u naar de map src/cloud-to-device-console-app en maakt u een bestand met de naam appsettings.json. Dit bestand bevat de instellingen die nodig zijn om het programma uit te voeren.
Blader naar de bestands share in het opslagaccount dat u hebt gemaakt in de bovenstaande installatiestap en zoek het bestand appsettings.json onder de bestands share deployment-output. Klik op het bestand en klik vervolgens op de knop Downloaden. De inhoud moet worden geopend in een nieuw browsertabblad, dat er als het volgende uit moet zien:
{ "IoThubConnectionString": "HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX", "deviceId": "avasample-iot-edge-device", "moduleId": "avaedge" }Met de IoT Hub-verbindingsreeks kunt u Visual Studio Code gebruiken om opdrachten naar de Edge-modules te verzenden via Azure IoT Hub. Kopieer de bovenstaande JSON naar het bestand src/cloud-to-device-console-app/appsettings.json.
Blader vervolgens naar de map src/edge en maak een bestand met de extensie .env. Dit bestand bevat eigenschappen die Visual Studio Code gebruikt om modules te implementeren op een edge-apparaat.
Blader naar de bestands share in het opslagaccount dat u hebt gemaakt in de bovenstaande installatiestap en zoek het env.txt-bestand onder de bestands share deployment-output. Klik op het bestand en klik vervolgens op de knop Downloaden. De inhoud moet worden geopend in een nieuw browsertabblad, dat er als het volgende uit moet zien:
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>"Kopieer de JSON van uw env.txt naar het bestand src/edge/.env.
Verbinding maken aan de IoT Hub
In Visual Studio Code stelt u de IoT Hub connection string in door het pictogram Meer acties naast het deelvenster AZURE IOT HUB in de linkerbenedenhoek te selecteren. Kopieer de tekenreeks vanuit het bestand src/cloud-to-device-console-app/appsettings.json.
Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Vernieuw Azure IoT Hub in ongeveer 30 seconden in de sectie linksonder. Als het goed is, ziet u het
avasample-iot-edge-deviceedge-apparaat waarop de volgende modules moeten zijn geïmplementeerd:- Edge Hub (modulenaam edgeHub)
- Edge Agent (modulenaam edgeAgent)
- Video Analyzer (modulenaam avaedge)
- RTSP-simulator (modulenaam rtspsim)
Het bewaken van de modules voorbereiden
Wanneer u deze quickstart of zelfstudie gebruikt, worden er gebeurtenissen verzonden naar de IoT Hub. Volg deze stappen om deze gebeurtenissen te bekijken:
Open het deelvenster Explorer in Visual Studio Code en zoek Azure IoT Hub in de linkerbenedenhoek.
Vouw het knooppunt Apparaten uit.
Klik met de rechtermuisknop op
avasample-iot-edge-deviceen selecteer Bewaking van ingebouwd gebeurtenis-eindpunt starten.Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
De voorbeeldvideo bekijken
Bij het instellen van de Azure-resources wordt een korte video van wegverkeer gekopieerd naar de virtuele Linux-machine in Azure die u als IoT Edge-apparaat gebruikt. In deze quickstart wordt het videobestand gebruikt voor het simuleren van een livestream.
Open een toepassing als VLC Media Player. Druk op Ctrl+N en plak een koppeling naar de voorbeeldvideo met de kruising van wegen om het afspelen te starten. U ziet beelden van veel voertuigen die over de snelweg rijden.
Bij het instellen van de Azure-resources wordt een korte video van wegverkeer gekopieerd naar de virtuele Linux-machine in Azure die u als IoT Edge-apparaat gebruikt. In deze quickstart wordt het videobestand gebruikt voor het simuleren van een livestream.
Open een toepassing als VLC Media Player. Druk op Ctrl+N en plak een koppeling naar de voorbeeldvideo met de kruising van wegen om het afspelen te starten. U ziet beelden van veel voertuigen die over de snelweg rijden.
De voorbeeldbestanden bekijken
Ga in Visual Studio Code naar src/edge. U ziet het bestand .env en enkele implementatiesjabloonbestanden.
De implementatiesjabloon verwijst naar het implementatiemanifest voor het edge-apparaat, waarbij variabelen zijn gebruikt voor bepaalde eigenschappen. Het bestand .env bevat de waarden voor die variabelen.
Ga naar de map src/cloud-to-device-console-app. Hier ziet u het bestand appsettings.json en enkele andere bestanden:
c2d-console-app.csproj: het projectbestand voor Visual Studio Code.
operations.json: een lijst met de bewerkingen die u het programma wilt laten uitvoeren.
Program.cs: de voorbeeldcode van het programma. Deze code:
- De app-instellingen laden.
- Roept directe methoden aan die worden blootgesteld door de Edge-module van Video Analyzer. U kunt de module gebruiken om livevideostreams te analyseren door de bijbehorende directe methoden aan te roepen.
- Pauzeert, zodat u de uitvoer van het programma kunt controleren in het TERMINAL-venster en de gebeurtenissen die zijn gegenereerd door de module kunt controleren in het UITVOER-venster.
- Roept directe methoden aan voor het opschonen van resources.
Ga in Visual Studio Code naar src/edge. U ziet het bestand .env en enkele implementatiesjabloonbestanden.
De implementatiesjabloon verwijst naar het implementatiemanifest voor het edge-apparaat, waarbij variabelen zijn gebruikt voor bepaalde eigenschappen. Het bestand .env bevat de waarden voor die variabelen.
Ga naar de map src/cloud-to-device-console-app. Hier ziet u het bestand appsettings.json en enkele andere bestanden:
operations.json: een lijst met de bewerkingen die u het programma wilt laten uitvoeren.
main.py: de voorbeeldprogrammacode. Deze code:
- De app-instellingen laden.
- Roept directe methoden aan die beschikbaar worden gemaakt door de Azure Video Analyzer-module. U kunt de module gebruiken om livevideostreams te analyseren door de bijbehorende directe methoden aan te roepen.
- Pauzeert, zodat u de uitvoer van het programma kunt controleren in het TERMINAL-venster en de gebeurtenissen die zijn gegenereerd door de module kunt controleren in het UITVOER-venster.
- Roept directe methoden aan voor het opschonen van resources.
Het implementatiemanifest genereren en implementeren
Het implementatiemanifest geeft aan welke modules op een edge-apparaat worden geïmplementeerd. Ook bevat het de configuratie-instellingen voor deze modules.
Volg deze stappen om het manifest te genereren op basis van het sjabloonbestand en het vervolgens te implementeren op het edge-apparaat.
Open Visual Studio Code.
Selecteer naast het deelvenster AZURE IOT HUB het pictogram Meer acties om de IoT Hub-verbindingsreeks in te stellen. U kunt de tekenreeks kopiëren uit het bestand src/cloud-to-device-console-app/appsettings.json.

Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Klik met de rechtermuisknop op src/edge/deployment.template.json en selecteer IoT Edge-implementatiemanifest genereren.

Met deze actie maakt u een manifestbestand met de naam deployment.amd64.json in de map src/edge/config.
Klik met de rechtermuisknop op src/edge/config/deployment.amd64.json, selecteer Implementatie voor één apparaat maken en selecteer vervolgens de naam van uw edge-apparaat.

Wanneer u wordt gevraagd om een IoT Hub te selecteren, kiest u avasample-iot-edge-device in de vervolgkeuzelijst.
Vernieuw Azure IoT Hub na ongeveer 30 seconden in de linkerbenedenhoek van het venster. Op het edge-apparaat worden nu de volgende geïmplementeerde modules weergegeven:
- Edge-module van Video Analyzer (modulenaam
avaedge) - RTSP-simulator (Real-Time Streaming Protocol) (modulenaam
rtspsim)
- Edge-module van Video Analyzer (modulenaam
Het implementatiemanifest geeft aan welke modules op een edge-apparaat worden geïmplementeerd. Ook bevat het de configuratie-instellingen voor deze modules.
Volg deze stappen om het manifest te genereren op basis van het sjabloonbestand en het vervolgens te implementeren op het edge-apparaat.
Open Visual Studio Code.
Selecteer naast het deelvenster AZURE IOT HUB het pictogram Meer acties om de IoT Hub-verbindingsreeks in te stellen. U kunt de tekenreeks kopiëren uit het bestand src/cloud-to-device-console-app/appsettings.json.

Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>Klik met de rechtermuisknop op src/edge/deployment.template.json en selecteer IoT Edge-implementatiemanifest genereren.

Met deze actie maakt u een manifestbestand met de naam deployment.amd64.json in de map src/edge/config.
Klik met de rechtermuisknop op src/edge/config/deployment.amd64.json, selecteer Implementatie voor één apparaat maken en selecteer vervolgens de naam van uw edge-apparaat.

Wanneer u wordt gevraagd een apparaat IoT Hub selecteren, kiest u avasample-iot-edge-device in de vervolgkeuzelijst.
Vernieuw Azure IoT Hub na ongeveer 30 seconden in de linkerbenedenhoek van het venster. Op het edge-apparaat worden nu de volgende geïmplementeerde modules weergegeven:
- Azure Video Analyzer (modulenaam
avaedge) - RTSP-simulator (Real-Time Streaming Protocol) (modulenaam
rtspsim)
- Azure Video Analyzer (modulenaam
Het bewaken van gebeurtenissen voorbereiden
U gebruikt de Edge-module van Video Analyzer om beweging in de binnenkomende livevideostream te detecteren en gebeurtenissen te verzenden naar IoT Hub. Volg deze stappen om deze gebeurtenissen te bekijken:
Open het deelvenster Explorer in Visual Studio Code en zoek Azure IoT Hub in de linkerbenedenhoek.
Vouw het knooppunt Apparaten uit.
Klik met de rechtermuisknop op avasample-iot-edge-device en selecteer Bewaking van ingebouwd gebeurtenis-eindpunt starten.

Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
U gebruikt de Azure Video Analyzer-module om beweging in de binnenkomende livevideostream te detecteren en gebeurtenissen te verzenden naar IoT Hub. Volg deze stappen om deze gebeurtenissen te bekijken:
- Open het deelvenster Explorer in Visual Studio Code en zoek Azure IoT Hub in de linkerbenedenhoek.
- Vouw het knooppunt Apparaten uit.
- Klik met de rechtermuisknop op avasample-iot-edge-device en selecteer Bewaking van ingebouwd gebeurtenis-eindpunt starten.

Notitie
U wordt mogelijk gevraagd om ingebouwde eindpuntgegevens op te geven voor de IoT Hub. Om die informatie op te halen, gaat Azure Portal naar uw IoT Hub en gaat u naar de optie Ingebouwde eindpunten in het linkernavigatiedeelvenster. Klik hier en zoek naar het event hub-compatibele eindpunt onder de sectie Eindpunt dat compatibel is met Event Hub. Kopieer en gebruik de tekst in het vak. Het eindpunt ziet er als het volgende uit: Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Het voorbeeldprogramma uitvoeren
Volg deze stappen om de voorbeeldcode uit te voeren:
Open in Visual Studio Code het tabblad Extensies (of druk op Ctrl+Shift+X) en zoek naar Azure IoT Hub.
Klik met de rechtermuisknop en selecteer Extensie-instellingen.
Zoek 'Uitgebreid bericht tonen' en schakel deze optie in.
Ga in Visual Studio Code naar src/cloud-to-device-console-app/operations.json.
Zorg ervoor dat u op het knooppunt pipelineTopologySet de volgende waarde ziet:
"pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"Zorg ervoor dat op de knooppunten en de waarde van topologyName overeenkomt met de waarde van de eigenschap
livePipelineSetlivePipelineDeletename in de pijplijntopologie:"topologyName" : "MotionDetection"Start een foutopsporingssessie door de toets F5 te selecteren. In het TERMINAL-venster worden enkele berichten weergegeven.
Het bestand operations.json- wordt gestart met aanroepen naar
pipelineTopologyListenlivePipelineList. Als u resources hebt opgeschoond nadat u de vorige quickstarts hebt voltooid, retourneert dit proces lege lijsten.----------------------- Request: pipelineTopologyList -------------------------------------------------- { "@apiVersion": "1.1" } --------------- Response: pipelineTopologyList - Status: 200 --------------- { "value": [] } --------------------------------------------------------------------------In het TERMINAL-venster wordt de volgende set aanroepen van directe methoden weergegeven:
- Een aanroep
pipelineTopologySetvan die gebruikmaakt van de voorgaande pipelineTopologyUrl - Een aanroep van
livePipelineSetwaarin gebruik wordt gemaakt van de volgende hoofdtekst:
{ "@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" } ] } }- Een aanroep
livePipelineActivatevan die de live-pijplijn en de videostroom start. - Een tweede aanroep
livePipelineListvan die laat zien dat de live-pijplijn wordt uitgevoerd.
- Een aanroep
De uitvoer in het TERMINAL-venster wordt gepauzeerd bij
Press Enter to continue. Selecteer Enter nog niet. Schuif omhoog om de nettoladingen voor het JSON-antwoord te zien voor de directe methoden die u hebt aangeroepen.Schakel naar het UITVOER-venster in Visual Studio Code. U ziet berichten die de Video Analyzer Edge-module naar de IoT-hub verstuurt. In de volgende sectie van deze quickstart worden deze berichten besproken.
De live-pijplijn blijft de resultaten uitvoeren en afdrukken. Via de RTSP-simulator wordt de bronvideo continu herhaald. Als u de live-pijplijn wilt stoppen, gaat u terug naar het TERMINAL-venster en selecteert u Enter.
Met de volgende reeks aanroepen worden resources opgeschoond:
- Een aanroep van
livePipelineDeactivatede deactiveert de pijplijn. - Met een aanroep
livePipelineDeletevan wordt de pijplijn verwijderd. - Met een aanroep van
pipelineTopologyDeletewordt de topologie verwijderd. - Met een aanroep van
pipelineTopologyListwordt ten slotte aangegeven dat de lijst leeg is.
- Een aanroep van
Volg deze stappen om de voorbeeldcode uit te voeren:
Open in Visual Studio Code het tabblad Extensies (of druk op Ctrl+Shift+X) en zoek naar Azure IoT Hub.
Klik met de rechtermuisknop en selecteer Extensie-instellingen.
Zoek 'Uitgebreid bericht tonen' en schakel deze optie in.
Ga in Visual Studio Code naar src/cloud-to-device-console-app/operations.json.
Zorg ervoor
pipelineTopologySetdat u op het knooppunt de volgende waarde ziet:"pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/motion-detection/topology.json"Zorg ervoor dat op de knooppunten en de waarde van topologyName overeenkomt met de waarde van de eigenschap
livePipelineSetlivePipelineDeletename in de pijplijntopologie:"topologyName" : "MotionDetection"-
- Navigeer naar
TERMINALhet venster in VS Code - Gebruik de opdracht cd om naar de map /video-analyzer-iot-edge-python-main/src/cloud-to-device-console-app te navigeren
- Voer 'python main.py' uit. Vervolgens worden er berichten weergegeven in het
TERMINALvenster
- Navigeer naar
Het bestand operations.json- wordt gestart met aanroepen naar
pipelineTopologyListenlivePipelineList. Als u resources hebt opgeschoond nadat u de vorige quickstarts hebt voltooid, retourneert dit proces lege lijsten.----------------------- Request: pipelineTopologyList -------------------------------------------------- { "@apiVersion": "1.1" } --------------- Response: pipelineTopologyList - Status: 200 --------------- { "value": [] } --------------------------------------------------------------------------In het TERMINAL-venster wordt de volgende set aanroepen van directe methoden weergegeven:
- Een aanroep
pipelineTopologySetvan die gebruikmaakt van de voorgaande pipelineTopologyUrl - Een aanroep van
livePipelineSetwaarin gebruik wordt gemaakt van de volgende hoofdtekst:
{ "@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" } ] } }- Een aanroep
livePipelineActivatevan die de live-pijplijn en de videostroom start. - Een tweede aanroep
livePipelineListvan die laat zien dat de live-pijplijn wordt uitgevoerd.
- Een aanroep
De uitvoer in het TERMINAL-venster wordt gepauzeerd bij
Press Enter to continue. Selecteer Enter nog niet. Schuif omhoog om de nettoladingen voor het JSON-antwoord te zien voor de directe methoden die u hebt aangeroepen.Schakel naar het UITVOER-venster in Visual Studio Code. U ziet berichten die de Azure Video Analyzer-module naar de IoT-hub verstuurt. In de volgende sectie van deze quickstart worden deze berichten besproken.
De live-pijplijn blijft de resultaten uitvoeren en afdrukken. Via de RTSP-simulator wordt de bronvideo continu herhaald. Als u de live-pijplijn wilt stoppen, gaat u terug naar het TERMINAL-venster en selecteert u Enter.
Met de volgende reeks aanroepen worden resources opgeschoond:
- Een aanroep van
livePipelineDeactivatede deactiveert de pijplijn. - Met een aanroep
livePipelineDeletevan wordt de pijplijn verwijderd. - Met een aanroep van
pipelineTopologyDeletewordt de topologie verwijderd. - Met een aanroep van
pipelineTopologyListwordt ten slotte aangegeven dat de lijst leeg is.
- Een aanroep van
Resultaten interpreteren
Wanneer u de live-pijplijn hebt uitgevoerd, worden de resultaten van het knooppunt van de bewegingsdetectorprocessor via het IoT Hub message sink-knooppunt naar de IoT-hub geleid. De berichten die u ziet in het uitvoervenster van Visual Studio Code bevatten een sectie body en een sectie applicationProperties. Zie IoT Hub-berichten maken en lezen voor meer informatie.
In de volgende berichten definieert de Edge-module van Video Analyzer de eigenschappen van de toepassing en de inhoud van de body.
MediaSessionEstablished-gebeurtenis
Wanneer een live-pijplijn wordt geactiveerd, probeert het RTSP-bron-knooppunt verbinding te maken met de RTSP-server die wordt uitgevoerd op de rtspsim-live555-container. Als het lukt om de verbinding tot stand te brengen, wordt de volgende gebeurtenis afgedrukt.
[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"
}
}
In de voorgaande uitvoer geldt het volgende:
- Het bericht is een diagnostische gebeurtenis, MediaSessionEstablished. Het geeft aan dat het RTSP-bronknooppunt (het onderwerp) is verbonden met de RTSP-simulator en is begonnen met het ontvangen van een (gesimuleerde) livefeed.
- De sectie sdp bevat gegevens over de diagnostische gebeurtenis. In dit geval bevatten de gegevens de details van Session Description Protocol (SDP).
MotionDetection-gebeurtenis
Wanneer er beweging wordt gedetecteerd, verzendt de Video Analyzer-module een deferentiegebeurtenis. Het * * type wordt ingesteld op beweging om aan te geven dat het een resultaat is van de bewegingsdetectieprocessor.
Hier volgt een voorbeeld van dit bericht:
{
"body": {
"timestamp": 145818422564951,
"inferences": [
{
"type": "motion",
"motion": {
"box": {
"l": 0.322176,
"t": 0.574627,
"w": 0.525,
"h": 0.088889
}
}
}
]
},
"properties": { … },
"systemProperties": { … }
}
In dit voorbeeld geldt het volgende:
De waarde van de body is gegevens over de analysegebeurtenis. In dit geval is de gebeurtenis een deferentiegebeurtenis, zodat de body tijdstempel- en deferencesgegevens bevat.
De deferences-gegevens geven aan dat het type beweging is. Het heeft aanvullende gegevens over die bewegingsgebeurtenis.
De sectie box bevat de coördinaten voor een begrensingsvak rond het bewegende object. De waarden worden genormaliseerd door de breedte en hoogte van de video in pixels. Als u bijvoorbeeld de oorspronkelijke pixelcoördinaten wilt op halen, vermenigvuldigt u de horizontale dimensies met 1920 en de verticale dimensies met 1080.
l - distance from left of image t - distance from top of image w - width of bounding box h - height of bounding box
Wanneer u de live-pijplijn hebt uitgevoerd, worden de resultaten van het knooppunt van de bewegingsdetectorprocessor via het IoT Hub message sink-knooppunt naar de IoT-hub geleid. De berichten die u ziet in het uitvoervenster van Visual Studio Code bevatten een sectie body en een sectie applicationProperties. Zie IoT Hub-berichten maken en lezen voor meer informatie.
In de volgende berichten definieert de Azure Video Analyzer-module de toepassingseigenschappen en de inhoud van de body.
MediaSessionEstablished-gebeurtenis
Wanneer een live-pijplijn wordt geactiveerd, probeert het RTSP-bron-knooppunt verbinding te maken met de RTSP-server die wordt uitgevoerd op de rtspsim-live555-container. Als het lukt om de verbinding tot stand te brengen, wordt de volgende gebeurtenis afgedrukt.
[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"
}
}
In de voorgaande uitvoer geldt het volgende:
- Het bericht is een diagnostische gebeurtenis, MediaSessionEstablished. Het geeft aan dat het RTSP-bronknooppunt (het onderwerp) is verbonden met de RTSP-simulator en is begonnen met het ontvangen van een (gesimuleerde) livefeed.
- De sectie sdp bevat gegevens over de diagnostische gebeurtenis. In dit geval bevatten de gegevens de details van Session Description Protocol (SDP).
MotionDetection-gebeurtenis
Wanneer beweging wordt gedetecteerd, verzendt de Video Analyzer-module een deference-gebeurtenis. Het type wordt ingesteld op beweging om aan te geven dat het een resultaat is van de bewegingsdetectieprocessor.
Hier volgt een voorbeeld van dit bericht:
{
"body": {
"timestamp": 145818422564951,
"inferences": [
{
"type": "motion",
"motion": {
"box": {
"l": 0.322176,
"t": 0.574627,
"w": 0.525,
"h": 0.088889
}
}
}
]
},
"properties": { … },
"systemProperties": { … }
}
In dit voorbeeld geldt het volgende:
De waarde van de body is gegevens over de analysegebeurtenis. In dit geval is de gebeurtenis een deference-gebeurtenis, waardoor de body tijdstempel- en deferencesgegevens bevat.
De deferences-gegevens geven aan dat het type beweging is. Het heeft aanvullende gegevens over die bewegingsgebeurtenis.
Het vakgedeelte bevat de coördinaten voor een begrensingsvak rond het bewegende object. De waarden worden genormaliseerd door de breedte en hoogte van de video in pixels. Als u bijvoorbeeld de oorspronkelijke pixelcoördinaten wilt op halen, vermenigvuldigt u de horizontale dimensies met 1920 en de verticale dimensies met 1080.
l - distance from left of image t - distance from top of image w - width of bounding box h - height of bounding box
Resources opschonen
Als u de andere quickstarts wilt proberen, moet u de resources die u hebt gemaakt, bewaren. Anders gaat u in Azure Portal naar de resourcegroepen, selecteert u de resourcegroep waar u deze quickstart hebt uitgevoerd en verwijdert u vervolgens alle resources.
Volgende stappen
Volg de quickstart Livevideo analyseren met uw eigen model om AI toe te passen op live videofeeds.
Bekijk extra uitdagingen voor gevorderde gebruikers:
- Gebruik een IP-camera die RTSP ondersteunt in plaats van de RTSP-simulator. U vindt IP-camera's die RTSP ondersteunen op de pagina met ONVIF-compatibele producten. Zoek naar apparaten die voldoen aan de profielen G, S of T.
- Gebruik een AMD64- of x64-apparaat met Linux in plaats van een virtuele Linux-machine in Azure. Dit apparaat moet zich in hetzelfde netwerk als de IP-camera bevinden. Volg de instructies in Azure IoT Edge-runtime installeren op Linux. Volg vervolgens de instructies in Deploy your first IoT Edge module to a virtual Linux device register the device with Azure IoT Hub.