Het HTTP-extensieprotocol gebruiken

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


Met Azure Video Analyzer kunt u de verwerkingsmogelijkheden verbeteren via een pijplijnextensie-knooppunt. Het knooppunt van de HTTP-extensieprocessor maakt uitbreidingsscenario's mogelijk met behulp van het HTTP-extensieprotocol, waarbij prestaties en/of optimaal resourcegebruik niet het belangrijkste zijn. In dit artikel leert u meer over het gebruik van dit protocol voor het verzenden van berichten tussen de Video Analyzer en een HTTP REST-eindpunt, dat doorgaans wordt verpakt rond een AI-deferentieserver.

Het HTTP-contract wordt op basis van de volgende twee onderdelen gedefinieerd:

  • HTTP-server
  • De Video Analyzer-module fungeert als de HTTP-client

HTTP-contract

Aanvraag

Aanvragen van de Video Analyzer-module naar uw HTTP-server zijn als volgt:

Sleutel Waarde
POST https://hostname/optional-path?optional-query
Accepteren application/json
Autorisatie Basic, Digest, Bearer (door ondersteuning voor aangepaste headers)
Content-Type image/jpeg
image/png
image/bmp
image/x-raw
Lengte Content-Length: lengte van de hoofdtekst, in bytes
User-Agent Azure Media Services
Hoofdtekst Bytes per afbeelding, binair versleuteld in een van de ondersteunde inhoudstypen.

### 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)

Antwoord

De reacties van uw deferentieserver op de Video Analyzer-module moeten er als volgt uit zien:

Sleutel Waarde
Statuscodes 200 OK - deductieresultaten gevonden
204 Geen inhoud - Geen resultaat gevonden door de AI
400 Ongeldige aanvraag - niet verwacht
500 Interne serverfout - niet verwacht
503 Server bezet - Video Analyzer maakt een back-off op basis van de header 'Opnieuw proberen-na' of op basis van een standaardtijd als de header niet aanwezig is.
Content-Type application/json
Content-Length Lengte van de hoofdtekst, in bytes
Hoofdtekst JSON-object met één inferences-eigenschap.

Voorbeeld

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

Het wordt aanbevolen dat antwoorden worden geretourneerd met behulp van geldige JSON-documenten volgens het vooraf gedefinieerde schema dat is gedefinieerd volgens het objectmodel van het deference metadata schema. Het voldoen aan het schema zorgt voor interoperabiliteit met andere onderdelen in Video Analyzer, zoals de mogelijkheid om objecten in live video bij te houden en deferencemetagegevens over video heen te leggen tijdens het afspelen, zoals hier wordt gedemonstreerd.

Als uw module een antwoord retourneert waarbij het inhoudstype niet 'application/json' is, codeert Video Analyzer het bericht als basis 64-inhoud en serialiseert het als een ondoorzichtige JSON-nettolading.

Als uw module een antwoord retourneert met inhoudstype als 'application/json', maar het JSON-schema niet het bovenstaande metagegevensschema voor de deferentie volgt, wordt de nettolading van het bericht doorgestuurd via de pijplijn, maar wordt de interoperabiliteit verminderd.

Notitie

Als uw deferentieserver geen resultaat voor een bepaalde afbeelding produceert, moet deze HTTP 204-statuscode (geen inhoud) met een lege antwoord body retourneren. Video Analyzer begrijpt dit als een leeg resultaat en zal de gebeurtenis niet doorsturen in de pijplijn.

Volgende stappen

Meer informatie over het gRPC-extensieprotocol