Korzystanie z protokołu rozszerzenia HTTP

ikona krawędzi
Alternatywnie zapoznaj się z tematami w obszarze Tworzenie aplikacji wideo w usłudze.


Usługa Azure Video Analyzer umożliwia rozszerzenie możliwości przetwarzania za pośrednictwem węzła rozszerzenia potoku. Węzeł procesora rozszerzeń HTTP umożliwia scenariusze rozszerzalności przy użyciu protokołu rozszerzenia HTTP, gdzie wydajność i/lub optymalne wykorzystanie zasobów nie jest podstawowym problemem. W tym artykule dowiesz się, jak używać tego protokołu do wysyłania komunikatów między analizatorem wideo i punktem końcowym REST protokołu HTTP, który zazwyczaj jest opakowany wokół serwera wnioskowania AI.

Kontrakt HTTP jest definiowany między następującymi dwoma składnikami:

  • Serwer HTTP
  • Moduł Video Analyzer działa jako klient HTTP

Kontrakt HTTP

Żądanie

Żądania z modułu Video Analyzer do serwera HTTP będą następujące:

Klucz Wartość
POST https://hostname/optional-path?optional-query
Zaakceptuj application/json
Autoryzacja Basic, Digest, Bearer (za pośrednictwem obsługi nagłówków niestandardowych)
Content-Type image/jpeg
image/png
image/bmp
image/x-raw
Długość treści o długości treści w bajtach
User-Agent Azure Media Services
Treść Bajty obrazów zakodowane binarnie w jednym z obsługiwanych typów zawartości.

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

Reakcja

Odpowiedzi z serwera wnioskowania do modułu Video Analyzer powinny być następujące:

Klucz Wartość
Kody stanu 200 OK — znaleziono wyniki wnioskowania
204 Brak zawartości — nie znaleziono wyniku przez AI
400 — Złe żądanie — oczekiwano
500 Internal Server Error - Not expected (Wewnętrzny błąd serwera 500 — nie oczekiwano)
503 Serwer zajęty — analizator wideo będzie wrócić na podstawie nagłówka "Ponów próbę po" lub na podstawie domyślnej ilości czasu, jeśli nagłówek nie istnieje.
Content-Type application/json
Długość zawartości Długość treści w bajtach
Treść Obiekt JSON z pojedynczą właściwością "inferences".

Przykład

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

Zaleca się zwracanie odpowiedzi przy użyciu prawidłowych dokumentów JSON zgodnie ze wstępnie określonym schematem zdefiniowanym zgodnie z modelem obiektu schematu metadanych wnioskowania. Zgodność ze schematem zapewni współdziałanie z innymi składnikami w analizatorze wideo, takimi jak możliwość śledzenia obiektów w wideo na żywo i nakładanie metadanych wnioskowania na wideo podczas odtwarzania, jak pokazano tutaj.

Jeśli moduł zwraca odpowiedź, w której typ zawartości nie jest "application/json", usługa Video Analyzer zakoduje komunikat jako podstawową zawartość 64 i serializuje go jako nieprzezroczysty ładunek JSON.

Jeśli moduł zwraca odpowiedź z typem zawartości "application/json", ale schemat JSON nie jest zgodne z powyższym schematem metadanych wnioskowania, ładunek komunikatu zostanie przekazane przez potok, ale współdziałanie zostanie ograniczone.

Uwaga

Jeśli serwer wnioskowania nie zwraca żadnego wyniku dla danego obrazu, musi zwrócić kod stanu HTTP 204 (bez zawartości) z pustą treścią odpowiedzi. Analizator wideo będzie to rozumieć jako pusty wynik i nie będzie przesyłać dalej zdarzenia w całym potoku.

Następne kroki

Przeczytaj o protokole rozszerzenia gRPC