Använda HTTP-tilläggsprotokollet

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


Med Azure Video Analyzer kan du förbättra dess bearbetningsfunktioner via en pipelinetilläggsnod. Http-tilläggets processornod möjliggör utökningsscenarier med HTTP-tilläggsprotokollet, där prestanda och/eller optimal resursanvändning inte är det primära problemet. I den här artikeln får du lära dig hur du använder det här protokollet för att skicka meddelanden mellan Video Analyzer och en HTTP REST-slutpunkt, som vanligtvis är omsluten av en AI-inferensserver.

HTTP-kontraktet definieras mellan följande två komponenter:

  • HTTP-server
  • Video Analyzer-modulen fungerar som HTTP-klient

HTTP-kontrakt

Förfrågan

Begäranden från Video Analyzer-modulen till HTTP-servern skulle vara följande:

Tangent Värde
POST https://hostname/optional-path?optional-query
Acceptera application/json
Auktorisering Basic, Digest, Bearer (via stöd för anpassade huvuden)
Content-Type bild/jpeg
bild/png
bild/bmp
image/x-raw
Innehållslängd för brödtext, i byte
User-Agent Azure Media Services
Brödtext Bildbyte, binärt kodat i någon av de innehållstyper som stöds.

### Example

```html
POST http://localhost:8080/inference HTTP/1.1
Host: localhost:8080
x-ms-client-request-id: d6050cd4-c9f2-42d3-9adc-53ba7e440f17
Content-Type: image/bmp
Content-Length: 519222

(Image Binary Content)

Svarsåtgärder

Svar från inferensservern till Video Analyzer-modulen ska vara följande:

Tangent Värde
Statuskoder 200 OK – Härledningsresultat hittades
204 Inget innehåll – Inget resultat hittades av AI
400 Felaktig begäran – förväntas inte
500 Internt serverfel – förväntas inte
503 Servern är upptagen – Video Analyzer backoff baseras på "Retry-After"-huvudet, eller baserat på en standardtid om rubriken inte finns.
Content-Type application/json
Innehållslängd Brödtextlängd, i byte
Brödtext JSON-objekt med en enda "slutsatslednings"-egenskap.

Exempel

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 468
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 17 Apr 2021 04:44:01 GMT

{
  "inferences": [
    {
      "type": "entity",
      "entity": {
        "tag": { "value": "car", "confidence": 0.9048132 },
        "box": { "l": 0.42681578, "t": 0.47660735, "w": 0.019501392, "h": 0.020954132 }
      }
    },
    {
      "type": "entity",
      "entity": {
        "tag": { "value": "car", "confidence": 0.8953932 },
        "box": { "l": 0.55083525, "t": 0.4843858, "w": 0.046550274, "h": 0.046502113 }
      }
    }    
  ]
}

Vi rekommenderar att svar returneras med giltiga JSON-dokument som följer det fördefinierade schemat som definierats enligt objektmodellen för inferensmetadataschemat. Genom att följa schemat säkerställer du samverkan med andra komponenter i Video Analyzer, till exempel möjligheten att spåra objekt i live-video och överlappa härledningsmetadata över video under uppspelningen, vilket visas här.

Om modulen returnerar ett svar där innehållstypen inte är "application/json" kodar Video Analyzer meddelandet som ett base 64-innehåll och serialiserar det som en täckande JSON-nyttolast.

Om modulen returnerar ett svar med innehållstyp som "application/json" men JSON-schemat inte följer schemat för härledningsmetadata vidarebefordras meddelandenyttolasten via pipelinen, men samverkan minskar.

Anteckning

Om inferensservern inte producerar något resultat för en viss bild måste den returnera HTTP 204-statuskod (inget innehåll) med en tom svarstext. Video Analyzer kommer att förstå detta som ett tomt resultat och vidarebefordrar inte händelsen i hela pipelinen.

Nästa steg

Läs mer om gRPC-tilläggsprotokollet