將裝置連線至 Azure 影片分析器

雲朵圖示
或者,請參閱在邊緣建立智慧型影片應用程式下的主題。


注意

我們即將淘汰 Azure 影片分析器預覽服務,建議您在 2022 年 12 月 1 日之前從影片分析器轉換出您的應用程式。

適用於媒體的 Azure 影片分析器不受此淘汰所影響。 現在已重新命名為 Azure Video Indexer。 按一下這裡以深入瞭解。

需要採取動作:若要將工作負載中斷降至最低,請在 2022 年 12 月 1 日之前,根據本指南所述的建議,從影片分析器轉換您的應用程式。 2022 年 12 月 1 日之後,您的 Azure 影片分析器帳戶將不再運作。 從 2022 年 5 月 2 日開始,您將無法建立新的影片分析器帳戶。

若要從裝置擷取和錄製影片,Azure 影片分析器服務必須建立與其建立 RTSP 連線。 如果裝置位於防火牆後方,便會封鎖此類連線,且可能不一定會建立規則以允許來自 Azure 的輸入連線。 若要支援此類裝置,您可以建置並安裝 Azure IoT 隨插即用裝置實作,該實作會接聽透過 IoT 中樞從影片分析器傳送的命令,然後開啟服務的安全 Websocket 通道。 建立此類通道之後,影片分析器就可以連線至 RTSP 伺服器。

概述

本文提供建置 Azure IoT PnP 裝置實作的高階概念,可讓影片分析器從裝置擷取和錄製影片。

應用程式需要:

  1. 以 IoT 裝置身分執行
  2. 使用特定命令 (tunnelOpen) 實作 IoT PnP 介面
  3. 收到這類命令時:
    • 驗證收到的引數
    • 使用提供的權杖開啟與所提供 URL 的安全 Websocket 連線
    • 將 Websocket 位元組轉送至相機的 RTSP 伺服器 TCP 連線

將裝置連線至雲端

以 IoT 裝置身分執行

影片分析器應用程式將會部署為影片分析器 PnP 外掛程式。 這需要使用其中一個 Azure IoT 裝置 SDK 來建置 IoT PnP 裝置實作。 向您的IoT 中樞註冊 IoT 裝置,以取得IoT 中樞裝置識別碼和裝置連接字串。

IoT 裝置用戶端設定

  • 將 OPTION_MODEL_ID 設定為 “dtmi:azure:videoanalyzer:WebSocketTunneling;1” 以支援 PnP 查詢
  • 請確定您的裝置是透過 WebSocket 通訊協定使用 MQTT 或 MQTT 來連線至 Azure IoT 中樞
    • 在 IoT 裝置上設定時,透過 HTTPS Proxy 連線至 IoT 中樞
  • 註冊 tunnelOpen 直接方法的回撥

實作影片分析器的 IoT PnP 介面

下列 Digital Twins 定義語言 (DTDL) 模型描述可連線至影片分析器的裝置。

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:azure:videoanalyzer:WebSocketTunneling;1",
  "@type": "Interface",
  "displayName": "Azure Video Analyzer Web Socket Tunneling",
  "description": "This interface enables media publishing to Azure Video Analyzer service from a RTSP compatible device which is located behind a firewall or NAT device.",
  "contents": [
    {
      "@type": "Command",
      "displayName": "Tunnel Open",
      "name": "tunnelOpen",
      "request": {
        "@type": "CommandPayload",
        "displayName": "Parameters",
        "name": "parameters",
        "schema": {
          "@type": "Object",
          "fields": [
            {
              "displayName": "Remote Endpoint",
              "description": "The remote endpoint for the web socket tunnel.",
              "name": "remoteEndpoint",
              "schema": "string"
            },
            {
              "displayName": "Remote Authorization Token",
              "description": "The bearer token for the web socket authentication.",
              "name": "remoteAuthorizationToken",
              "schema": "string"
            },
            {
              "displayName": "Local Port",
              "description": "The local port where web socket data should be tunneled to.",
              "name": "localPort",
              "schema": "integer"
            }
          ]
        }
      }
    }
  ]
}

IoT 裝置會註冊直接方法 tunnelOpen,其中要求的本文會有參數 remoteEndpointremoteAuthorizationTokenlocalPort,如上所示。

實作直接方法 tunnelOpen

當影片分析器服務叫用 tunnelOpen 直接方法時,應用程式必須執行下列動作:

  1. 取得裝置的可用 RTSP 連接埠
  2. 比較直接方法呼叫中指定的 localPort 值與可用的連接埠
    • 如果找不到相符項目,則會傳回 BadRequest (請參閱下方的〈錯誤回應〉一節)
  3. 開啟對「(相機 IP 或主機名稱):localPort」的 TCP 連線
    • 如果連線失敗,則會傳回 BadRequest
    • 附註:主機名稱通常是 localhost
  4. 開啟與 remoteEndpoint 的 Web 通訊端連線 (在裝置上設定時,透過 Proxy)
    • 將 HTTP「Authorization」標頭設定為「Bearer (remoteAuthorizationToken)」
    • 以值「PnpDevice」設定標頭「TunnelConnectionSource」
    • 將 User-Agent 設定為可協助您識別實作的適當值。
      • 例如,您可能想要擷取 CPU、OS、裝置的模型/組成架構。
    • 如果 Web 通訊端連線成功,則會傳回 200 OK,否則會傳回適當的錯誤碼
  5. 傳回回應 (不會封鎖)
  6. IoT PnP 裝置實作會開始在 Websocket 與 RTSP 伺服器 TCP 連線之間雙向傳送 TCP 資料

影片分析器服務會在失敗時重試 tunnelOpen 要求,因此應用程式中不需要重試。

錯誤回應

如果 tunnelOpen 要求失敗,則回應本文應如下所示

{
    "code": "<errorCode>", // Use HTTP status error codes
    "target": "<uri>", // The target URI experiencing the issue
    "message": "<Error message>",  // Short error message describing issue. Do not include end user identifiable information.
}

此類錯誤回應的範例包括:

  • 本地連接埠無法作為 RTSP 或 RTSPS 連接埠 { "代碼": "400", "目標": "(相機 IP 或主機名稱):{localPort}", "訊息": "本地連接埠無法使用"}
  • 逾時/無法連線至 RTSP 端點 { "代碼": "400", "目標": "(相機 IP 或主機名稱):{localPort}", "訊息": "無法連線至 RTSP 端點"}
  • 來自 Web 通訊端連線嘗試的逾時/錯誤回應 { "代碼": "{WebSocket response code}", "目標": "{remoteEndpoint}", "訊息": "{Web 通訊端回應錯誤訊息}"}

擷取至影片分析器

若要擷取和錄製視訊分析器,必須建立已啟用通道的管道拓撲。 從該拓撲中,必須建立並啟動即時管道。 此程序的指示如下所述。

範例實作

如果您想要在裝置上實作應用程式,以將其連線至影片分析器,請連絡 videoanalyzerhelp@microsoft.com。

另請參閱

什麼是 IoT 隨插即用?