使用 HTTP 擴充通訊協定

邊緣圖示
或者,請參閱在 服務中建立影片應用程式底下的主題。


Azure Video Analyzer 可讓您透過 管線擴充 節點增強其處理功能。 HTTP 擴充功能處理器節點可使用 HTTP 擴充通訊協定來啟用擴充性案例,其中效能和(或)最佳資源使用率不是主要考慮。 在本文中,您將瞭解如何使用此通訊協定來傳送影片分析器與 HTTP REST 端點之間的訊息,這通常會包裝在 AI 推斷伺服器周圍。

HTTP 合約定義於下列兩個元件之間:

  • HTTP 伺服器
  • 影片分析器模組可作為 HTTP 用戶端

HTTP 合約

要求

從影片分析器模組到 HTTP 伺服器的要求如下所示:

Key
POST https://hostname/optional-path?optional-query
接受 application/json
授權 基本 (Basic)、摘要 (Digest)、持有人 (Bearer) (透過自訂標頭支援)
Content-Type image/jpeg
image/png
image/bmp
image/x-raw
Content-Length 主體長度 (位元組)
User-Agent Azure 媒體服務
主體 影像位元組,以其中一種支援內容類型編碼的二進位檔。

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

回應

從您的推斷伺服器到影片分析器模組的回應應如下所示:

Key
狀態碼 200 OK - 找到推斷結果
204沒有內容-AI 找不到任何結果
400 不正確的要求 - 不符合預期
500 內部伺服器錯誤 - 不符合預期
503伺服器忙碌-影片分析器會根據「稍後重試」標頭進行輪詢,或根據預設的時間量(如果標頭不存在)進行輪詢。
Content-Type application/json
Content-Length 主體長度 (以位元組為單位)
主體 具有單一「推斷」屬性的 JSON 物件。

範例

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

建議您在根據 推斷中繼資料架構物件模型定義的預先建立架構之後,使用有效的 JSON 檔傳迴響應。 符合架構可確保與影片分析器中其他元件的互通性,例如在即時影片中追蹤物件的能力,以及在播放期間透過影片重迭推斷中繼資料(如下所示)。

如果您的模組傳回的回應中內容類型不是 "application/json",影片分析器會將訊息編碼為基底64內容,並將其序列化為不透明的 JSON 承載。

如果您的模組傳回內容類型為 "application/json" 的回應,但 JSON 架構未遵循上述推斷中繼資料架構,則訊息承載將會透過管線轉送,但互通性將會降低。

注意

如果您的推斷伺服器不會針對指定的映射產生任何結果,它必須傳回 HTTP 204 狀態碼 (沒有任何內容) 空白的回應主體。 影片分析器將瞭解這是空的結果,而不會在整個管線中轉送事件。

下一步

瞭解 gRPC 延伸模組通訊協定