Directe methoden van Azure Video Analyzer

edge icon
U kunt ook onderwerpen bekijken onder Videotoepassingen maken in de service.


Notitie

De preview-service van Azure Video Analyzer wordt buiten gebruik gesteld. U wordt aangeraden uw toepassingen tegen 01 december 2022 over te zetten van Video Analyzer.

Azure Video Analyzer voor Media wordt niet beïnvloed door deze buitengebruikstelling. De naam is nu hernoemd naar Azure Video Indexer. Klik hier voor meer informatie.

Actie vereist: als u onderbreking van uw workloads wilt minimaliseren, moet u uw toepassing overzetten van Video Analyzer per suggesties die vóór 01 december 2022 in deze handleiding worden beschreven. Na 1 december 2022 werkt uw Azure Video Analyzer-account niet meer. Vanaf 2 mei 2022 kunt u geen nieuwe Video Analyzer-accounts maken.

De Edge-module avaedge van Azure Video Analyzer biedt verschillende directe methoden die vanuit IoT Hub kunnen worden aangeroepen. Directe methoden vertegenwoordigen een interactie tussen aanvragen en antwoorden met een apparaat dat vergelijkbaar is met een HTTP-aanroep waarin ze direct slagen of mislukken (na een door de gebruiker opgegeven time-out). Deze aanpak is nuttig voor scenario's waarbij het verloop van de onmiddellijke actie verschillend is, afhankelijk van het feit of het apparaat in staat was om te reageren. Zie Directe methoden van IoT Hub begrijpen en aanroepen voor meer informatie.

In dit onderwerp worden deze methoden, conventies en het schema van de methoden beschreven.

Conventies

De directe methoden zijn gebaseerd op de volgende conventies:

  1. Directe methoden hebben een versie opgegeven in MAJOR. SECUNDAIRE indeling (zoals weergegeven in het volgende voorbeeld). Het is het getal @apiVersion waarbij "1" de MAJOR en "0" is in dit voorbeeld:

    {
      "methodName": "pipelineTopologySet",
      "payload": {
          "@apiVersion": "1.1",
          "name": "{TopologyName}",
          "properties": {
              // Desired Topology properties
          }
      }
    }
    
  2. Een bepaalde versie van de Video Analyzer-module ondersteunt alle secundaire versies van een directe methode die de huidige versie aanroept. Ondersteuning in primaire versies is niet gegarandeerd.

  3. Alle directe methoden zijn synchroon.

  4. Foutresultaten zijn gebaseerd op het OData-foutschema.

  5. Namen moeten rekening houden met de volgende beperkingen:

    • Alleen alfanumerieke tekens en streepjes zolang deze niet begint en eindigt met een streepje
    • Geen spaties
    • Maximaal 32 tekens

Voorbeeld van een antwoord van een directe methode

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

{
  "@apiVersion": "1.1"
}

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

{
  "value": []
}

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

Foutcodes

Zoals wordt weergegeven in het onderstaande voorbeeld, is er een foutcode op het hoogste niveau wanneer u een foutmelding krijgt van een directe methode en vindt u meer informatie onder 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"
        }
      ]
    }
  }
}

Hieronder ziet u de foutcodes die op het hoogste niveau worden gebruikt.

Status Code Bericht
400 BadRequest Aanvraag is ongeldig
400 InvalidResource Resource is ongeldig
400 InvalidVersion API-versie is ongeldig
402 ConnectivityRequired Voor de Edge-module is cloudconnectiviteit vereist om goed te functioneren.
404 NotFound Resource is niet gevonden
409 Conflict Bewerkingsconflict
500 InternalServerError Interne serverfout
503 ServerBusy Server bezet

Hieronder volgen enkele foutcodes die op detailniveau worden gebruikt.

Status Gedetailleerde code Beschrijving
400 PipelineValidationError Algemene pijplijnfouten, zoals cycli of partitionering, enzovoort.
400 ModuleValidationError Modulespecifieke validatiefouten.
409 PipelineTopologyInUse Naar de pijplijntopologie wordt nog steeds verwezen door een of meer live-pijplijnen.
409 OperationNotAllowedInState De aangevraagde bewerking kan niet worden uitgevoerd in de huidige status.
409 ResourceValidationError Resource waarnaar wordt verwezen (bijvoorbeeld: videoresource) heeft geen geldige status.

Ondersteunde directe methoden

Hieronder volgen de directe methoden die worden weergegeven door de Edge-module Video Analyzer. Het schema voor de directe methoden vindt u hier.

pipelineTopologyList

Deze directe methode bevat alle pijplijntopologieën die zijn gemaakt.

Aanvraag

{
  "@apiVersion": "1.1"
}

Antwoord

{
  "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
      
    }    
  ]
}

Statuscodes

Voorwaarde Statuscode
Entiteit gevonden 200
Algemene gebruikersfouten 400-bereik
Entiteit is niet gevonden 404
Algemene serverfouten 500-bereik

pipelineTopologySet

Hiermee maakt u een pijplijntopologie met de opgegeven naam als er geen dergelijke topologie bestaat of werkt u een bestaande topologie met die naam bij.

Belangrijke aspecten:

  • Een pijplijntopologie kan vrij worden bijgewerkt als er geen live-pijplijnen naar verwijzen.

  • Een pijplijntopologie kan vrij worden bijgewerkt als alle verwijst naar live-pijplijnen worden gedeactiveerd zolang:

    • Nieuwe toegevoegde parameters hebben standaardwaarden
    • Verwijderde parameters worden niet verwezen door een pijplijn
  • Alleen sommige updates voor pijplijntopologie zijn toegestaan terwijl een live-pijplijn actief is.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode Gedetailleerde foutcode
Bestaande entiteit bijgewerkt 200 N.v.t.
Nieuwe entiteit gemaakt 201 N.v.t.
Algemene gebruikersfouten 400-bereik
Validatiefouten in pijplijn 400 PipelineValidationError
Modulevalidatiefouten 400 ModuleValidationError
Algemene serverfouten 500-bereik

pipelineTopologyGet

Er wordt een pijplijntopologie opgehaald met de opgegeven naam, als deze bestaat.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode
Geslaagd 200
Algemene gebruikersfouten 400-bereik
Algemene serverfouten 500-bereik

pipelineTopologyDelete

Hiermee verwijdert u één pijplijntopologie.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode Gedetailleerde foutcode
Entiteit verwijderd 200 N.v.t.
Entiteit niet gevonden 204 N.v.t.
Algemene gebruikersfouten 400-bereik
Pijplijntopologie wordt verwezen door een of meer pijplijnen 409 PipelineTopologyInUse
Algemene serverfouten 500-bereik

livePipelineList

Een lijst met alle live-pijplijnen.

Aanvraag

  {
        "@apiVersion": "1.1"
  }

Antwoord

{
  "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
    }    
  ]
}

Statuscodes

Voorwaarde Statuscode
Entiteit gevonden 200
Algemene gebruikersfouten 400-bereik
Entiteit niet gevonden 404
Algemene serverfouten 500-bereik

livePipelineSet

Hiermee maakt u een live-pijplijn met de opgegeven naam als er geen live-pijplijn bestaat of werkt u een bestaande live-pijplijn bij met die naam.

Belangrijke aspecten:

  • Een live-pijplijn kan vrij worden bijgewerkt terwijl deze de status Gedeactiveerd heeft. In andere statussen zijn slechts enkele updates toegestaan.
  • Bij elke update wordt een live-pijplijn opnieuw gevalideerd.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode Gedetailleerde foutcode
Bestaande entiteit bijgewerkt 200 N.v.t.
Nieuwe entiteit gemaakt 201 N.v.t.
Algemene gebruikersfouten 400-bereik N.v.t.
Validatiefouten voor livepijplijnen 400 PipelineValidationError
Modulevalidatiefouten 400 ModuleValidationError
Resourcevalidatiefouten 409 ResourceValidationError
Algemene serverfouten 500-bereik N.v.t.

livePipelineDelete

Hiermee verwijdert u één live-pijplijn.

Belangrijke aspecten:

  • Alleen gedeactiveerde live-pijplijnen kunnen worden verwijderd.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode Gedetailleerde foutcode
Live-pijplijn is verwijderd 200 N.v.t.
Live-pijplijn niet gevonden 204 N.v.t.
Algemene gebruikersfouten 400-bereik
Pijplijn heeft niet de status Gedeactiveerd 409 OperationNotAllowedInState
Algemene serverfouten 500-bereik

livePipelineGet

Dit is vergelijkbaar met livePipelineTopologyGet. Er wordt een live-pijplijn opgehaald met de opgegeven naam, als deze bestaat.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode
Geslaagd 200
Algemene gebruikersfouten 400-bereik
Algemene serverfouten 500-bereik

livePipelineActivate

Hiermee wordt een live-pijplijn geactiveerd.

Belangrijke aspecten

  • De methode retourneert wanneer de live-pijplijn de status Activeren of Geactiveerd heeft.
  • Een lijst-/setbewerking in de livepijplijn retourneert de huidige status.
  • Deze methode kan worden aangeroepen zolang de live-pijplijn niet de status 'Deactivating' heeft (tijdelijk).
  • Idempotentie:
    • Het aanroepen livePipelineActivate van een live-pijplijn die al de status Activeren heeft, gedraagt zich op dezelfde manier als als als de live-pijplijn is gedeactiveerd.
    • Het activeren van een pijplijn met de status Actief retourneert onmiddellijk een succescode.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode Gedetailleerde foutcode
Pijplijn is geactiveerd 200 N.v.t.
Nieuwe entiteit gemaakt 201 N.v.t.
Algemene gebruikersfouten 400-bereik
Modulevalidatiefouten 400 ModuleValidationError
Resourcevalidatiefouten 409 ResourceValidationError
Live-pijplijn heeft deactiverende status 409 OperationNotAllowedInState
Algemene serverfouten 500-bereik

livePipelineDeactivate

Deactiveert een live-pijplijn. Het deactiveren van een pijplijn deactiveert de videoverwerking probleemloos en zorgt ervoor dat alle gebeurtenissen en video's die op de rand in de cache zijn opgeslagen, waar van toepassing worden doorgevoerd in de cloud.

Belangrijke aspecten:

  • De methode wordt alleen geretourneerd wanneer de live-pijplijn wordt gedeactiveerd.
  • Deze methode kan worden aangeroepen zolang de live-pijplijn niet de status 'Activeren' heeft (tijdelijk).
  • De pijplijn wordt geactiveerd terwijl deze wordt gedeactiveerd.
    • Een lijst-/setbewerking in de livepijplijn retourneert de huidige status.
    • Deactivering wordt voltooid wanneer alle media zijn geüpload naar de cloud (als de pijplijn een video-sinkknooppunt heeft).
  • Idempotentie:
    • Het aanroepen livePipelineDeactivate van een live-pijplijn die al de status Deactivating heeft, gedraagt zich op dezelfde manier als als als de live-pijplijn de status Actief heeft.
    • Het deactiveren van een pijplijn met de status Inactief retourneert onmiddellijk een geslaagde code.

Aanvraag

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

Antwoord

{
 "status": 200,
 "payload": null
}
Voorwaarde Statuscode Gedetailleerde foutcode
Pijplijn is geactiveerd 200 N.v.t.
Nieuwe entiteit gemaakt 201 N.v.t.
Algemene gebruikersfouten 400-bereik
Pijplijn heeft de activeringsstatus 409 OperationNotAllowedInState
Algemene serverfouten 500-bereik

remoteDeviceAdapterList

Geeft een lijst weer van alle externe apparaatadapters. De Edge-module Video Analyzer kan fungeren als een transparante gateway voor video, waardoor IoT-apparaten video naar de cloud kunnen verzenden vanaf een firewall. Er moet een externe apparaatadapter worden gemaakt voor elk dergelijk IoT-apparaat. De communicatie tussen de cloud en het IoT-apparaat zou dan stromen via de Edge-module van Video Analyzer.

Aanvraag

  {
        "@apiVersion": "1.1"
  }

Antwoord

{
  "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
    }    
  ]
}

Statuscodes

Voorwaarde Statuscode
Entiteit gevonden 200
Algemene gebruikersfouten 400-bereik
Entiteit is niet gevonden 404
Algemene serverfouten 500-bereik

remoteDeviceAdapterSet

Hiermee maakt u een externe apparaatadapter met de opgegeven naam als er geen dergelijke adapter bestaat of werkt u een bestaande adapter bij met die naam. In de nettolading van het antwoord en in- of remoteDeviceAdapterGet aanroepen remoteDeviceAdapterList worden alle referenties of geheimen weggelaten.

Aanvraag

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

Antwoord

  {
    "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
        }
    }
  }

Statuscodes

Voorwaarde Statuscode Gedetailleerde foutcode
Bestaande entiteit bijgewerkt 200 N.v.t.
Nieuwe entiteit gemaakt 201 N.v.t.
Algemene gebruikersfouten 400-bereik N.v.t.
Validatiefouten voor externe apparaatadapters 400 RemoteDeviceAdapterValidationError
Modulevalidatiefouten 400 ModuleValidationError
Resourcevalidatiefouten 409 ResourceValidationError
Algemene serverfouten 500-bereik N.v.t.

remoteDeviceAdapterGet

Dit is vergelijkbaar met livePipelineTopologyGet. Er wordt een adapter van een extern apparaat opgehaald met de opgegeven naam, als deze bestaat (eventuele referenties of geheimen worden weggelaten).

Aanvraag

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

Antwoord

{
  "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
      }
    ]
  }
}

Statuscodes

Voorwaarde Statuscode
Geslaagd 200
Algemene gebruikersfouten 400-bereik
Algemene serverfouten 500-bereik

remoteDeviceAdapterDelete

Hiermee verwijdert u één adapter voor externe apparaten als deze bestaat.

Aanvraag

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

Antwoord

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

Statuscodes

Voorwaarde Statuscode Gedetailleerde foutcode
Externe apparaatadapter is verwijderd 200 N.v.t.
Externe apparaatadapter niet gevonden 204 N.v.t.
Algemene gebruikersfouten 400-bereik
Algemene serverfouten 500-bereik

onvifDeviceDiscover en onvifDeviceGet

De details van deze aanroepen vindt u in het artikel over het detecteren van apparaten die geschikt zijn voor ONVIF.

Volgende stappen

Configuratieschema van moduledubbel