Azure Video Analyzer Direct-metoder

edge icon
Du kan också ta en titt på avsnitten under Skapa videoprogram i tjänsten.


Anteckning

Vi drar tillbaka förhandsversionstjänsten för Azure Video Analyzer. Du rekommenderas att flytta dina program från Video Analyzer senast den 1 december 2022.

Azure Video Analyzer for Media påverkas inte av den här tillbakadragningen. Den har nu bytt namn till Azure Video Indexer. Klicka här om du vill läsa mer.

Åtgärd krävs: För att minimera störningar i dina arbetsbelastningar kan du överföra ditt program från Video Analyzer enligt förslag som beskrivs i den här guiden före den 1 december 2022. Efter den 1 december 2022 kommer ditt Azure Video Analyzer-konto inte längre att fungera. Från och med den 2 maj 2022 kommer du inte att kunna skapa nya Video Analyzer-konton.

Azure Video Analyzer Edge-modulen avaedge visar flera direkta metoder som kan anropas från IoT Hub. Direktmetoder representerar en interaktion mellan begäran och svar med en enhet som liknar ett HTTP-anrop eftersom de lyckas eller misslyckas omedelbart (efter en användardefinerad tidsgräns). Den här metoden passar bra i scenarier där vad som ska utföras beror på om enheten svarar eller inte. Mer information finns i Förstå och anropa direktmetoder från IoT Hub.

Det här avsnittet beskriver dessa metoder, konventioner och schemat för metoderna.

Konventioner

Direktmetoderna baseras på följande konventioner:

  1. Direktmetoder har en version som anges i MAJOR. MINOR-format (som du ser i följande exempel). Det är talet "@apiVersion" där "1" är MAJOR och "0" MINOR i det här exemplet:

    {
      "methodName": "pipelineTopologySet",
      "payload": {
          "@apiVersion": "1.1",
          "name": "{TopologyName}",
          "properties": {
              // Desired Topology properties
          }
      }
    }
    
  2. En viss version av Video Analyzer-modulen stöder alla delversioner av en direktmetod som anropar den aktuella versionen. Stöd för större versioner garanteras inte.

  3. Alla direktmetoder är synkrona.

  4. Felresultaten baseras på OData-felschemat.

  5. Namnen bör följa följande begränsningar:

    • Endast alfanumeriska tecken och bindestreck så länge de inte börjar och slutar med ett bindestreck
    • Inga blanksteg
    • Maximalt 32 tecken

Exempel på svar från en direktmetod

-----------------------  Request: livePipelineList  --------------------------------------------------

{
  "@apiVersion": "1.1"
}

---------------  Response: livePipelineList - Status: 200  ---------------

{
  "value": []
}

--------------------------------------------------------------------------

Felkoder

Som du ser i exemplet nedan finns det en felkod på den översta nivån när du får ett felsvar från en direktmetod och ytterligare information finns under details.

{
  "status": 400,
  "payload": {
    "error": {
      "code": "BadRequest",
      "message": "The request is invalid",
      "details": [
        {
          "code": "ApiVersionNotSupported",
          "message": "The API version '1.4' is not supported. Supported version(s): 1.0, 1.1"
        }
      ]
    }
  }
}

Följande är felkoderna som används på den översta nivån.

Status Kod Meddelande
400 BadRequest Begäran är inte giltig
400 InvalidResource Resursen är inte giltig
400 InvalidVersion API-versionen är inte giltig
402 ConnectivityRequired Edge-modulen kräver molnanslutning för att fungera korrekt.
404 NotFound Det gick inte att hitta resursen
409 Konflikt Åtgärdskonflikt
500 InternalServerError Internt serverfel
503 ServerBusy Servern är upptagen

Följande är några av de felkoder som används på detaljnivå.

Status Detaljerad kod Description
400 PipelineValidationError Allmänna pipelinefel som cykler eller partitionering osv.
400 ModuleValidationError Modulspecifika valideringsfel.
409 PipelineTopologyInUse Pipelinetopologin refereras fortfarande av en eller flera aktiva pipelines.
409 OperationNotAllowedInState Det går inte att utföra den begärda åtgärden i det aktuella tillståndet.
409 ResourceValidationError Refererad resurs (exempel: videoresurs) är inte i ett giltigt tillstånd.

Direktmetoder som stöds

Följande är de direkta metoder som exponeras av Video Analyzer Edge-modulen. Schemat för direktmetoderna finns här.

pipelineTopologyList

Den här direktmetoden visar alla pipelinetopologier som har skapats.

Förfrågan

{
  "@apiVersion": "1.1"
}

Svarsåtgärder

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-05-05T14:19:22.16Z",
        "lastModifiedAt": "2021-05-05T16:20:41.505Z"
      },
      
      // first pipeline topology payload
      
    },
      "systemData": {
        "createdAt": "2021-05-06T14:19:22.16Z",
        "lastModifiedAt": "2021-05-06T16:20:41.505Z"
      },
      
      // next pipeline topology payload
      
    }    
  ]
}

Statuskoder

Villkor Statuskod
Entitet hittades 200
Allmänna användarfel 400 intervall
Entiteten hittades inte 404
Allmänna serverfel 500 intervall

pipelineTopologySet

Skapar en pipelinetopologi med det angivna namnet om det inte finns någon sådan topologi eller uppdaterar en befintlig topologi med det namnet.

Viktiga aspekter:

  • En pipelinetopologi kan uppdateras fritt om det inte finns några aktiva pipelines som refererar till den.

  • En pipelinetopologi kan uppdateras fritt om alla refererande live-pipelines inaktiveras så länge:

    • Nyligen tillagda parametrar har standardvärden
    • Borttagna parametrar refereras inte av någon pipeline
  • Endast vissa uppdateringar av pipelinetopologi tillåts när en live-pipeline är aktiv.

Förfrågan

  {
    "methodName": "pipelineTopologySet",
    "payload": {
        "@apiVersion": "1.1",
        "name": "{TopologyName}",
        "properties": {
            // Desired pipeline topology properties
        }
    }
  }

Svarsåtgärder

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-05-11T18:16:46.491Z",
           "lastModifiedAt": "2021-05-11T18:16:46.491Z"
        },
        "name": "{TopologyName}",
        "properties": {
            // Complete pipeline topology
        }
    }
  }

Statuskoder

Villkor Statuskod Detaljerad felkod
Befintlig entitet har uppdaterats 200 Ej tillämpligt
Ny entitet har skapats 201 Ej tillämpligt
Allmänna användarfel 400 intervall
Pipelinevalideringsfel 400 PipelineValidationError
Fel vid modulvalidering 400 ModuleValidationError
Allmänna serverfel 500 intervall

pipelineTopologyGet

Den hämtar en pipelinetopologi med det angivna namnet, om den finns.

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{TopologyName}"       
  }

Svarsåtgärder

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-05-06T10:28:04.560Z",
          "lastModifiedAt": "2021-05-06T10:28:04.560Z"
        },
        "name": "{TopologyName}",
        // Complete pipeline topology
      }
    ]
  }
}

Statuskoder

Villkor Statuskod
Klart 200
Allmänna användarfel 400 intervall
Allmänna serverfel 500 intervall

pipelineTopologyDelete

Tar bort en enda pipelinetopologi.

Förfrågan

  {
    "methodName": "pipelineTopologyDelete",
    "payload": {
        "@apiVersion": "1.1",
        "name": "{TopologyName}"
    }
  }

Svarsåtgärder

{
    "status": 200,
    "payload": null
}

Statuskoder

Villkor Statuskod Detaljerad felkod
Entitet borttagen 200 Ej tillämpligt
Entiteten hittades inte 204 Ej tillämpligt
Allmänna användarfel 400 intervall
Pipelinetopologin refereras av en eller flera pipelines 409 PipelineTopologyInUse
Allmänna serverfel 500 intervall

livePipelineList

Visar en lista över alla live-pipelines.

Förfrågan

  {
        "@apiVersion": "1.1"
  }

Svarsåtgärder

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-05-05T14:19:22.16Z",
        "lastModifiedAt": "2021-05-05T16:20:41.505Z"
      },      
      // first live pipeline payload  
    },
      "systemData": {
        "createdAt": "2021-05-06T14:19:22.16Z",
        "lastModifiedAt": "2021-05-06T16:20:41.505Z"
      },
      // next live pipeline payload
    }    
  ]
}

Statuskoder

Villkor Statuskod
Entitet hittades 200
Allmänna användarfel 400 intervall
Entiteten hittades inte 404
Allmänna serverfel 500 intervall

livePipelineSet

Skapar en live-pipeline med det angivna namnet om det inte finns någon sådan live-pipeline eller uppdaterar en befintlig live-pipeline med det namnet.

Viktiga aspekter:

  • En live-pipeline kan uppdateras fritt när den är i tillståndet "Inaktiverad". I andra tillstånd tillåts endast vissa uppdateringar.
  • En live-pipeline förnyas vid varje uppdatering.

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}",
        "properties": {
            // Desired live pipeline properties
        }
  }

Svarsåtgärder

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-05-11T18:16:46.491Z",
           "lastModifiedAt": "2021-05-11T18:16:46.491Z"
        },
        "name": "{livePipelineName}",
        "properties": {
            // Complete live pipeline
        }
    }
  }

Statuskoder

Villkor Statuskod Detaljerad felkod
Befintlig entitet har uppdaterats 200 Ej tillämpligt
Ny entitet har skapats 201 Ej tillämpligt
Allmänna användarfel 400 intervall Ej tillämpligt
Valideringsfel för livepipelines 400 PipelineValidationError
Fel vid modulvalidering 400 ModuleValidationError
Fel vid resursvalidering 409 ResourceValidationError
Allmänna serverfel 500 intervall Ej tillämpligt

livePipelineDelete

Tar bort en enda live-pipeline.

Viktiga aspekter:

  • Endast inaktiverade live-pipelines kan tas bort.

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"
  }

Svarsåtgärder

  {
    "status": 200,
    "payload": null
  }

Statuskoder

Villkor Statuskod Detaljerad felkod
Live-pipelinen har tagits bort 200 Ej tillämpligt
Det går inte att hitta live-pipelinen 204 Ej tillämpligt
Allmänna användarfel 400 intervall
Pipelinen är inte i tillståndet "Inaktiverad" 409 OperationNotAllowedInState
Allmänna serverfel 500 intervall

livePipelineGet

Detta liknar livePipelineTopologyGet. Den hämtar en live-pipeline med det angivna namnet, om den finns.

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"       
  }

Svarsåtgärder

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-05-06T10:28:04.560Z",
          "lastModifiedAt": "2021-05-06T10:28:04.560Z"
        },
        "name": "{livePipelineName}",
        // Complete live pipeline
      }
    ]
  }
}

Statuskoder

Villkor Statuskod
Klart 200
Allmänna användarfel 400 intervall
Allmänna serverfel 500 intervall

livePipelineActivate

Aktiverar en live-pipeline.

Viktiga aspekter

  • Metoden returnerar när live-pipelinen är i tillståndet "Aktivera" eller "Aktiverad".
  • En list-/uppsättningsåtgärd på den aktiva pipelinen returnerar det aktuella tillståndet.
  • Den här metoden kan anropas så länge den aktiva pipelinen inte är i tillståndet (tillfälligt) "Inaktivera".
  • Idempotens:
    • Att anropa livePipelineActivate på en live-pipeline som redan är i tillståndet "Aktivera" fungerar på samma sätt som om den aktiva pipelinen inaktiverades.
    • Om du aktiverar en pipeline som är i tillståndet "Aktiv" returneras en lyckad kod omedelbart.

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"
  }

Svarsåtgärder

{
    "status": 200,
    "payload": null
}

Statuskoder

Villkor Statuskod Detaljerad felkod
Pipelinen har aktiverats 200 Ej tillämpligt
Ny entitet har skapats 201 Ej tillämpligt
Allmänna användarfel 400 intervall
Fel vid modulvalidering 400 ModuleValidationError
Fel vid resursvalidering 409 ResourceValidationError
Live-pipelinen är i inaktiveringstillstånd 409 OperationNotAllowedInState
Allmänna serverfel 500 intervall

livePipelineDeactivate

Inaktiverar en live-pipeline. Om du inaktiverar en pipeline inaktiveras videobearbetningen på ett smidigt sätt och alla händelser och videor som cachelagras på gränsenheter checkas in i molnet när det är tillämpligt.

Viktiga aspekter:

  • Metoden returnerar bara när live-pipelinen inaktiveras.
  • Den här metoden kan anropas så länge den aktiva pipelinen inte är i tillståndet (tillfälligt) "Aktivera".
  • Pipelinen hamnar i tillståndet "Inaktivera" när den inaktiveras.
    • En list-/uppsättningsåtgärd på den aktiva pipelinen returnerar det aktuella tillståndet.
    • Inaktivering slutförs när alla media har laddats upp till molnet (om pipelinen har en nod för videomottagare ).
  • Idempotens:
    • Att anropa livePipelineDeactivate en live-pipeline som redan är i tillståndet "Inaktivera" fungerar på samma sätt som om den aktiva pipelinen var i tillståndet "Aktiv".
    • Om du inaktiverar en pipeline som är i "inaktivt" tillstånd returneras en lyckad kod omedelbart.

Förfrågan

  {
    "@apiVersion": "1.1",
    "name": "{livePipelineName}"
  }

Svarsåtgärder

{
 "status": 200,
 "payload": null
}
Villkor Statuskod Detaljerad felkod
Pipelinen har aktiverats 200 Ej tillämpligt
Ny entitet har skapats 201 Ej tillämpligt
Allmänna användarfel 400 intervall
Pipelinen är i aktiveringstillstånd 409 OperationNotAllowedInState
Allmänna serverfel 500 intervall

remoteDeviceAdapterList

Visar en lista över alla fjärrenhetskort. Video Analyzer Edge-modulen kan fungera som en transparent gateway för video, vilket gör att IoT-enheter kan skicka video till molnet bakom en brandvägg. Ett fjärrenhetskort ska skapas för varje sådan IoT-enhet. Kommunikationen mellan molnet och IoT-enheten flödar sedan via Video Analyzer Edge-modulen.

Förfrågan

  {
        "@apiVersion": "1.1"
  }

Svarsåtgärder

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-10-05T14:19:22.16Z",
        "lastModifiedAt": "2021-10-05T16:20:41.505Z"
      },      
      // first remote device adapter payload
    },
      "systemData": {
        "createdAt": "2021-10-06T14:19:22.16Z",
        "lastModifiedAt": "2021-10-06T16:20:41.505Z"
      },
      // next remote device adapter  payload
    }    
  ]
}

Statuskoder

Villkor Statuskod
Entitet hittades 200
Allmänna användarfel 400 intervall
Entiteten hittades inte 404
Allmänna serverfel 500 intervall

remoteDeviceAdapterSet

Skapar ett fjärrenhetskort med det angivna namnet om det inte finns något sådant kort eller uppdaterar ett befintligt kort med det namnet. I svarsnyttolasten och i remoteDeviceAdapterList eller remoteDeviceAdapterGet anrop utelämnas eventuella autentiseringsuppgifter eller hemligheter.

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}",
        "properties": {
            // Desired remote device adapter properties
        }
  }

Svarsåtgärder

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-10-11T18:16:46.491Z",
           "lastModifiedAt": "2021-10-11T18:16:46.491Z"
        },
        "name": "{remoteDeviceAdapterName}",
        "properties": {
            // Remote device adapter properties, except the credentials
        }
    }
  }

Statuskoder

Villkor Statuskod Detaljerad felkod
Befintlig entitet har uppdaterats 200 Ej tillämpligt
Ny entitet har skapats 201 Ej tillämpligt
Allmänna användarfel 400 intervall Ej tillämpligt
Valideringsfel för fjärrenhetskort 400 RemoteDeviceAdapterValidationError
Fel vid modulvalidering 400 ModuleValidationError
Fel vid resursvalidering 409 ResourceValidationError
Allmänna serverfel 500 intervall Ej tillämpligt

remoteDeviceAdapterGet

Detta liknar livePipelineTopologyGet. Den hämtar ett fjärrenhetskort med det angivna namnet, om det finns (eventuella autentiseringsuppgifter eller hemligheter utelämnas).

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}"       
  }

Svarsåtgärder

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-10-06T10:28:04.560Z",
          "lastModifiedAt": "2021-10-06T10:28:04.560Z"
        },
        "name": "{remoteDeviceAdapterName}",
        // Remote device adapter properties, except the credentials
      }
    ]
  }
}

Statuskoder

Villkor Statuskod
Klart 200
Allmänna användarfel 400 intervall
Allmänna serverfel 500 intervall

remoteDeviceAdapterDelete

Tar bort ett enda fjärrenhetskort om det finns.

Förfrågan

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}"
  }

Svarsåtgärder

  {
    "status": 200,
    "payload": null
  }

Statuskoder

Villkor Statuskod Detaljerad felkod
Fjärrenhetskortet har tagits bort 200 Ej tillämpligt
Det går inte att hitta fjärrenhetskortet 204 Ej tillämpligt
Allmänna användarfel 400 intervall
Allmänna serverfel 500 intervall

onvifDeviceDiscover och onvifDeviceGet

Information om dessa anrop finns i artikeln om identifiering av ONVIF-kompatibla enheter.

Nästa steg

Konfigurationsschema för modultvilling