Självstudie: Spela in och strömma härledningsmetadata med video


I den här självstudien får du lära dig hur du använder Azure Video Analyzer för att spela in livevideo och härledningsmetadata till molnet och spela upp inspelningen med visuella slutsatsledningsmetadata. I det här användningsfallet kommer du kontinuerligt spela in video, samtidigt som du använder en anpassad modell för att identifiera objekt (yoloV3) och en Video Analyzer-processor (objektspårare) för att spåra objekt. När videon registreras kontinuerligt kommer även härledningsmetadata från objekten att identifieras och spåras.

Om du inte har någon Azure-prenumeration kandu skapa ett kostnadsfritt konto innan du börjar.

Föreslagen förläsning

Läs dessa artiklar innan du börjar:

Förutsättningar

Krav för den här självstudien är:

Ställa in Azure-resurser

Distribuera till Azure

Distributionsprocessen tar cirka 20 minuter. När det är klart har du vissa Azure-resurser distribuerade i Azure-prenumerationen, inklusive:

  1. 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.
  2. Storage konto – för lagring av inspelade video- och videoanalyser.
  3. Hanterad identitet – Det här är den användar tilldelade hanterade identiteten som används för att hantera åtkomsten till lagringskontot ovan.
  4. Virtuell dator – Det här är en virtuell dator som fungerar som din simulerade gränsenhet.
  5. 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.

Utöver 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 anslutningssträngen för enheten 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 hjälp Visual Studio Code.
  • deployment.json – Det här är distributionsmanifestet som används av mallen för att distribuera gränsmoduler 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

Pipeline

Diagrammet är en bildrepresentation av en pipeline och ytterligare moduler som utför det önskade scenariot. Tre IoT Edge moduler ingår:

Som diagrammet visar använder du en RTSP-källnod i pipelinen för att samla in den simulerade direktvideon med trafik på en motorväg och skicka videon till två vägar:

  • Den första sökvägen är till en HTTP-tilläggsnod. HTTP-tilläggsnoden spelar rollen som proxy. Den konverterar varje 10:e videobildruta till den angivna bildtypen. Sedan vidarebefordrar den avbildningen via HTTP till en annan gränsmodul som kör en AI-modell bakom en HTTP-slutpunkt. I det här exemplet är edge-modulen byggd med hjälp av YOLOv3-modellen, som kan identifiera många typer av objekt. HTTP-tilläggsprocessornoden samlar in identifieringsresultaten och skickar dessa resultat och alla bildrutor (inte bara den 10:e bildrutan) till objektspårarnoden. Objektspårarnoden använder optiska flödestekniker för att spåra objektet i de 9 bildrutor som inte hade AI-modellen tillämpad på dem. Spårarnoden publicerar sina resultat till video-mottagareoden och IoT Hub mottagare. Video-mottagarens nod använder härledningsmetadata från objektspårarnoden för att spelas upp med den inspelade videon. Den IoT Hub skickar sedan dessa händelser till IoT Edge Hub.

  • Den andra sökvägen är direkt från RTSP-källan till video-mottagarenoden för att utföra kontinuerlig videoinspelning. Videon som ska användas i den här självstudien är en exempelvideo på en vägkorsning.

I de här självstudierna får du:

  1. Konfigurera utvecklingsmiljön.
  2. Distribuera de gränsmoduler som krävs.
  3. Skapa och distribuera live-pipelinen.
  4. Tolka resultatet.
  5. Rensa resurser.

Ställt in din utvecklingsmiljö

Hämta exempelkoden

  1. Klona lagringsplatsen FÖR AVA C#-exempel.

  2. Starta Visual Studio Code och öppna mappen där lagringsplatsen har laddats ned.

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

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

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

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

  1. 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. Om du vill hämta den Azure Portal du 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>

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

  1. Öppna Explorer-fönstret i Visual Studio Code och leta efter Azure IoT Hub i det nedre vänstra hörnet.

  2. Expandera noden Enheter.

  3. Högerklicka på och avasample-iot-edge-device välj Starta övervakning av inbyggd avasample-iot-edge-device

    Anteckning

    Du kan bli ombedd att ange inbyggd slutpunktsinformation för IoT Hub. Om du vill hämta den Azure Portal du 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 exempelfilerna

I Visual Studio Code bläddrar du till src/edge. Du ser .env-filen som du skapade och några mallfiler för distribution. Den här mallen definierar vilka gränsmoduler som du ska distribuera till gränsenhet (den virtuella Azure Linux-datorn). .env-filen innehåller värden för variablerna som används i dessa mallar, till exempel autentiseringsuppgifter för Video Analyzer.

Öppna src/edge/deployment.yolov3.template.json. Det finns tre poster under modulavsnittet som motsvarar de objekt som anges i föregående avsnitt av "Översikt"

  • avaedge:Det här är modulen Video Analyzer on IoT Edge.
  • yolov3:Det här är AI-modulen som skapats med hjälp av YOLO v3-modellen.
  • rtspsim:Det här är RTSP-simulatorn.

Bläddra sedan till mappen src/cloud-to-device-console-app. Här ser du filen appsettings.json som du skapade tillsammans med några andra filer:

  • c2d-console-app.csproj:Projektfilen för Visual Studio Code.
  • operations.json:Den här filen innehåller en lista över de olika åtgärder som du skulle köra.
  • Program.cs:Exempelprogrammets kod, som:
    • Läser in appinställningarna.

    • Anropar direktmetoder som exponeras av Video Analyzer IoT 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 utdata från programmet i TERMINAL-fönstret och de händelser som genereras av modulen i utdatafönstret.

    • Anropar direkta metoder för att rensa resurser.

Generera och distribuera IoT Edge distributionsmanifestet

  1. Högerklicka på filen src/edge/deployment.yolov3.template.json och välj sedan Generera IoT Edge distributionsmanifestet.

    Skärmbild av distributionsmanifestet IoT Edge skapa en distribution

    • Manifestfilen deployment.yolov3.amd64.json skapas i mappen src/edge/config.
  2. Högerklicka på src/edge/config/deployment.yolov3.amd64.json och välj Skapa distribution för enskild enhet.

    Skärmbild av Skapa distribution för en enskild enhet

  3. När du uppmanas att välja en IoT Hub enhet väljer du avasample-iot-edge-device.

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

    • Avaedge-modulen, som är videoanalysmodulen.

    • Rtspsim-modulen, som simulerar en RTSP-server och fungerar som källa för ett live-videoflöde.

    • Yolov3-modulen, som är yoloV3-objektidentifieringsmodellen som tillämpar datorseende på bilderna och returnerar flera klasser av objekttyper

      Skärmbild av YoloV3-objektidentifieringsmodellen

Skapa och distribuera live-pipelinen

Redigera exempelfilerna

  1. I Visual Studio Kod öppnar du fliken Tillägg (eller trycker på Ctrl+Skift+X) och söker efter Azure IoT Hub.

  2. Högerklicka och välj Extension Inställningar.

    Tilläggs-Inställningar

  3. Sök och aktivera "Visa utförligt meddelande".

    Visa utförligt meddelande

  4. Gå till src/cloud-to-device-console-app/operations.json.

  5. Under noden pipelineTopologySet redigerar du följande

    "pipelineTopologyUrl" : "https://raw.githubusercontent.com/Azure/video-analyzer/main/pipelines/live/topologies/cvr-with-httpExtension-and-objectTracking/topology.json"

  6. Under noderna livePipelineSet och pipelineTopologyDelete ser du sedan till att värdet för topologyName matchar värdet för namnegenskapen i pipelinetopologin ovan:

    "pipelineTopologyName" : "CVRHttpExtensionObjectTracking"

  7. Öppna pipelinetopologin i en webbläsare och titta på videoName – den är hårdkodad till . Detta är acceptabelt för en självstudie. I produktion bör du se till att varje unik RTSP-kamera registreras till en videoresurs med ett unikt namn.

  8. Granska inställningarna för HTTP-tilläggsnoden.

   "samplingOptions":{
       "skipSamplesWithoutAnnotation":"false",
       "maximumSamplesPerSecond":"2"
  }

Här är inställt på eftersom tilläggsnoden måste passera genom alla bildrutor, oavsett om de har skipSamplesWithoutAnnotationfalse inferensresultat eller inte, till den underordnade objektspårarnoden. Objektspåraren kan ungefär spåra objekt över 15 bildrutor. Din AI-modell har ett maximalt ANTAL FÖR BEARBETNING, vilket är det högsta värdet maximumSamplesPerSecond som ska anges till.

Kör exempelprogrammet

  1. Starta en felsökningssession genom att välja F5. Du ser att vissa meddelanden skrivs ut i TERMINAL-fönstret.

  2. Filen operations.json börjar med anrop till pipelineTopologyList och livePipelineList. Om du har rensat resurser efter tidigare snabbstarter eller självstudier returnerar den här åtgärden tomma listor och pausar sedan för att välja Returenligt följande:

    --------------------------------------------------------------------------
    Executing operation pipelineTopologyList
    -----------------------  Request: pipelineTopologyList  --------------------------------------------------
    {
      "@apiVersion": "1.1"
    }
    ---------------  Response: pipelineTopologyList - Status: 200  ---------------
    {
      "value": []
    }
    --------------------------------------------------------------------------
    Executing operation WaitForInput
    
    Press Enter to continue
    
  3. När du har valt Retur i TERMINAL-fönstret görs nästa uppsättning direkta metod-anrop:

    • Ett anrop till pipelineTopologySet med hjälp av föregående pipelinetopologyUrl

    • Ett anrop till livePipelineSet med hjälp av följande brödtext

      {
        "@apiVersion": "1.1",
        "name": "Sample-Pipeline-1",
        "properties": {
          "topologyName": "CVRHttpExtensionObjectTracking",
          "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 till livePipelineActivate som startar live-pipelinen och flödet av video.

    • Ett andra anrop till livePipelineList som visar att live-pipelinen är i körningstillstånd.

  4. Utdata i TERMINAL-fönstret pausar vid en Tryck på Retur för att fortsätta att fråga. Välj inte Retur ännu. Rulla uppåt för att se JSON-svarsnyttolaster för de direktmetoder som du anropade.

  5. Växla till fönstret UTDATA i Visual Studio Code. Du ser meddelanden som Video Analyzer på IoT Edge skickar till IoT-hubben.

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

  7. Nästa serie med anrop rensar resurser:

    • Ett anrop till livePipelineDeactivate inaktiverar den live-pipelinen.
    • Ett anrop till livePipelineDelete tar bort den direktsända pipelinen.
    • Ett anrop till pipelineTopologiTa bort tar bort pipelinetopologin.
    • Ett sista anrop till pipelineTopologyList visar att listan är tom.

Tolka resultaten

När du kör live-pipelinen passerar resultatet från http-tilläggsprocessornoden objektspårarnoden till IoT Hub-noden till IoT-hubben. De meddelanden som visas i utdatafönstret 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-modulen programegenskaperna och innehållet i brödtexten.

Diagnostikhändelser

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. Händelsetypen är Microsoft.VideoAnalyzer.Diagnostics.MediaSessionEstablished.

[IoTHubMonitor] [9:42:18 AM] Message received from [avasample-iot-edge-device/avaedge]:
{  "body": {
    "sdp": "SDP:\nv=0\r\no=- 1586450538111534 1 IN IP4 nnn.nn.0.6\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.03.06\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"
  },
  "applicationProperties": {
    "dataVersion": "1.0",
    "topic": "/subscriptions/{subscriptionID}/resourceGroups/{name}/providers/microsoft.media/videoAnalyzers/{ava-account-name}",
    "subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sources/rtspSource",
    "eventType": "Microsoft.VideoAnalyzer.Diagnostics.MediaSessionEstablished",
    "eventTime": "2020-04-09T16:42:18.1280000Z"
  }
}

Observera följande information i det här meddelandet:

  • Meddelandet är en diagnostikhändelse. MediaSessionEstablished anger att RTSP-källnoden (ämnet) som är ansluten till RTSP-simulatorn och har börjat ta emot en (simulerad) live-feed.
  • I applicationProperties anger ämnet att meddelandet genererades från RTSP-källnoden i live-pipelinen.
  • I applicationProperties anger eventType att den här händelsen är en diagnostikhändelse.
  • EventTime anger den tid då händelsen inträffade.
  • Brödtexten innehåller data om diagnostikhändelsen. I det här fallet består data av SDP-information (Session Description Protocol).

Drifthändelser

Objektspårningshändelser

HTTP-tilläggets processornod skickar den 0,15: e, 30:e, ... etc. bildrutor till yolov3-modulen och tar emot härledningsresultatet. Den skickar sedan dessa resultat och alla bildrutor till objektspårarnoden. Anta att ett objekt identifierades på bildruta 0 – då tilldelar objektspåraren ett unikt sequenceId till objektet. I bildrutorna 1, 2,...,14 och sedan, om det kan spåra objektet, kommer det att mata ut ett resultat med samma sequenceId. Observera hur upprepas i följande kodfragment från resultaten, men platsen för markeringsrutan har ändrats sequenceId när objektet flyttas.

Från bildruta M:

  {
    "type": "entity",
    "subtype": "objectDetection",
    "inferenceId": "4d325fc4dc7a43b2a781bf7d6bdb3ff0",
    "sequenceId": "0999a1dde5b241c3a0b2db025f87ab32",
    "entity": {
      "tag": {
        "value": "car",
        "confidence": 0.95237225
      },
      "box": {
        "l": 0.0025893003,
        "t": 0.550063,
        "w": 0.1086607,
        "h": 0.12116724
      }
    }
  },

Från bildruta N:

{
  "type": "entity",
  "subtype": "objectDetection",
  "inferenceId": "317aafdab7e940388be1e4c4cc58c366",
  "sequenceId": "0999a1dde5b241c3a0b2db025f87ab32",
  "entity": {
    "tag": {
      "value": "car",
      "confidence": 0.95237225
    },
    "box": {
      "l": 0.0027777778,
      "t": 0.54901963,
      "w": 0.108333334,
      "h": 0.12009804
    }
  }
},

InspelningStartad händelse

När video mottagare noden börjar spela in media, sändar den här händelsen av typen Microsoft.VideoAnalyzers.Pipeline.Operational.RecordingStarted:

[IoTHubMonitor] [9:42:38 AM] Message received from [avasample-iot-edge-device/avaedge]:
{
  "body": {
    "outputType": "videoName",
    "outputLocation": "sample-cvr-with-inference-metadata"
  },
  "applicationProperties": {
    "topic": "/subscriptions/{subscriptionID}/resourceGroups/{resource-group-name}/providers/microsoft.media/videoAnalyzers/{ava-account-name}",
    "subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sinks/videoSink",
    "eventType": "Microsoft.VideoAnalyzers.Pipeline.Operational.RecordingStarted",
    "eventTime": "2021-04-09T09:42:38.1280000Z",
    "dataVersion": "1.0"
  }
}

Ämnesavsnittet i applicationProperties refererar till video-mottagareoden i live-pipelinen, som genererade det här meddelandet.

Avsnittet brödtext innehåller information om utdataplatsen. I det här fallet är det namnet på videoanalysresursen där videon spelas in.

RecordingAvailable-händelse

Som namnet antyder skickas händelsen RecordingStarted när inspelningen har startat, men mediedata kanske inte har laddats upp till videoresursen ännu. När video mottagare noden har laddat upp media, sändar den en händelse av typen Microsoft.VideoAnalyzers.Pipeline.Operational.RecordingAvailable:

[IoTHubMonitor] [[9:43:38 AM] Message received from [ava-sample-device/avaedge]:
{
  "body": {
    "outputType": "videoName",
    "outputLocation": "sample-cvr-with-inference-metadata"
  },
  "applicationProperties": {
    "topic": "/subscriptions/{subscriptionID}/resourceGroups/{resource-group-name}/providers/microsoft.media/videoAnalyzers/{ava-account-name}",
    "subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sinks/videoSink",
    "eventType": "Microsoft.VideoAnalyzers.Pipeline.Operational.RecordingAvailable",
    "eventTime": "2021-04-09T09:43:38.1280000Z",
    "dataVersion": "1.0"
  }
}

Den här händelsen anger att tillräckligt med data har skrivits till videoresursen för spelare eller klienter för att starta uppspelningen av videon.

Ämnesavsnittet i applicationProperties refererar till video-mottagareoden i live-pipelinen, som genererade det här meddelandet.

Avsnittet brödtext innehåller information om utdataplatsen. I det här fallet är det namnet på videoanalysresursen där videon spelas in.

RecordingStopped-händelse

När du inaktiverar live-pipelinen stoppar video-mottagareoden inspelningsmediet. Den skickar den här händelsen av typen Microsoft.VideoAnalyzers.Pipeline.Operational.RecordingStopped:

[IoTHubMonitor] [11:33:31 PM] Message received from [ava-sample-device/avaedge]:
{
  "body": {
    "outputType": "videoName",
    "outputLocation": "sample-cvr-with-inference-metadata"
  },
  "applicationProperties": {
    "topic": "/subscriptions/{subscriptionID}/resourceGroups/{resource-group-name}/providers/microsoft.media/videoAnalyzers/{ava-account-name}",
    "subject": "/edgeModules/avaedge/livePipelines/Sample-Pipeline-1/sinks/videoSink",
    "eventType": "Microsoft.VideoAnalyzers.Pipeline.Operational.RecordingStopped",
    "eventTime": "2021-04-10T11:33:31.051Z",
    "dataVersion": "1.0"
  }
}

Den här händelsen anger att inspelningen har stoppats.

Ämnesavsnittet i applicationProperties refererar till video-mottagareoden i live-pipelinen, som genererade det här meddelandet.

Avsnittet brödtext innehåller information om utdataplatsen, vilket i det här fallet är namnet på den Video Analyzer-resurs där videon spelas in.

Strömma inspelningen med metadata för visuell slutsatsledning

Du kan undersöka videoresursen Video Analyzer som skapades av live-pipelinen genom att logga in på Azure Portal och visa videon.

  1. Öppna webbläsaren och gå till Azure Portal. Ange dina autentiseringsuppgifter och logga in på portalen. Standardvyn är instrumentpanelen.
  2. Leta upp ditt Video Analyzers-konto bland de resurser som du har i din prenumeration och öppna kontofönstret.
  3. Välj Videor i listan Videoanalysverktyg.
  4. Du hittar en video med namnet sample-cvr-with-inference-metadata . Det här är det namn som valts i pipelinetopologifilen.
  5. Välj videon.
  6. På videoinformationssidan klickar du på ikonen Spela upp
  7. Om du vill visa härledningsmetadata som avgränsade rutor i videon klickar du på markeringsrutan (inringad i rött)

    Skärmbild av videouppspelning

Anteckning

Eftersom videons källa var en container som simulerade en kamerafeed är tidsstämplarna i videon relaterade till när du aktiverade live-pipelinen och när du inaktiverade den.

Rensa resurser

Om du vill prova andra snabbstarter eller självstudier behåller du de resurser som du har skapat. Annars går du till Azure Portal, går till dina resursgrupper, väljer den resursgrupp där du körde den här snabbstarten och tar bort alla resurser.

Nästa steg

kantikon
Du kan också läsa avsnitten under Skapa videoprogram i tjänsten.