Azure Video Analyzer Direct-metoder
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:
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 } } }
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.
Alla direktmetoder är synkrona.
Felresultaten baseras på OData-felschemat.
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.
- Observera att det inte går att ta bort några livepipelines som refererar till en pipelinetopologi. Om det finns sådana live-pipelines får du ett
TopologyInUse
fel.
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.
- Att anropa
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.
- Att anropa
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.