Připojení zařízení do Azure Video Analyzeru

cloud icon
Případně si projděte témata v části Vytváření inteligentních video aplikací na hraničních zařízeních.


Poznámka

Do 1. prosince 2022 doporučujeme převést aplikace mimo Službu Video Analyzer ve verzi Preview služby Azure Video Analyzer.

Tento vyřazení nemá vliv na Azure Video Analyzer for Media. Teď se přejmenovává na Azure Video Indexer. Další informace čtete kliknutím sem .

Požadovaná akce: Pokud chcete minimalizovat přerušení úloh, převést aplikaci z Video Analyzeru na návrhy popsané v této příručce před 1. prosincem 2022. Po 1. prosinci 2022 už nebude váš účet Azure Video Analyzer fungovat. Od 2. května 2022 nebudete moct vytvářet nové účty Video Analyzeru.

Aby bylo možné zaznamenávat a zaznamenávat video ze zařízení, musí služba Azure Video Analyzer navázat připojení RTSP k němu. Pokud je zařízení za bránou firewall, tato připojení se zablokují a nemusí být vždy možné vytvářet pravidla pro povolení příchozích připojení z Azure. Pokud chcete tato zařízení podporovat, můžete vytvořit a nainstalovat implementaci zařízení Azure IoT Plug and Play, která naslouchá příkazům odeslaným prostřednictvím IoT Hub z Video Analyzeru a pak otevře zabezpečený tunel websocket pro službu. Jakmile se takový tunel vytvoří, video Analyzer se pak může připojit k serveru RTSP.

Přehled

Tento článek obsahuje základní koncepty vytvoření implementace zařízení Azure IoT PnP, která umožňuje nástroj Video Analyzer zaznamenávat a zaznamenávat video ze zařízení.

Aplikace bude muset:

  1. Spustit jako zařízení IoT
  2. Implementace rozhraní IoT PnP s konkrétním příkazem (tunnelOpen)
  3. Po přijetí takového příkazu:
    • Ověření přijatých argumentů
    • Otevření zabezpečeného připojení websocket k adrese URL poskytnuté pomocí poskytnutého tokenu
    • Přeposílání bajtů websocketu na připojení TCP serveru RTSP kamery

Connect devices to the cloud

Spustit jako zařízení IoT

Aplikace Video Analyzer se nasadí jako modul plug-in Video Analyzer PnP. To vyžaduje použití jedné ze sad SDK zařízení Azure IoT k sestavení implementace zařízení IoT PnP. Zaregistrujte zařízení IoT pomocí svého IoT Hub a získejte IoT Hub ID zařízení a připojovací řetězec zařízení.

Konfigurace klienta zařízení IoT

  • Nastavení OPTION_MODEL_ID na “dtmi:azure:videoanalyzer:WebSocketTunneling;1” podporu dotazů PnP
  • Ujistěte se, že vaše zařízení používá protokol MQTT nebo MQTT přes WebSockets pro připojení k Azure IoT Hub
    • Připojení IoT Hub přes proxy https, pokud je nakonfigurované na zařízení IoT
  • Registrace zpětného volání pro tunnelOpen přímou metodu

Implementace rozhraní IoT PnP pro analyzátor videa

Následující model DTDL (Digital Twins Definition Language) popisuje zařízení, které se může připojit k Nástroji Video Analyzer.

{
  "@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"
            }
          ]
        }
      }
    }
  ]
}

Zařízení IoT zaregistruje přímou metodu tunnelOpen, kde tělo požadavku bude mít parametry remoteEndpoint, remoteAuthorizationTokena localPort jak je znázorněno výše.

Implementace přímé metody tunnelOpen

tunnelOpen Pokud je přímá metoda vyvolána službou Video Analyzer, aplikace musí provést následující:

  1. Získání dostupných portů RTSP zařízení
  2. localPort Porovnejte hodnotu zadanou v volání přímé metody s dostupnými porty.
    • Pokud se nenašla žádná shoda, vraťte chybu BadRequest (viz část Odpovědi na chyby níže).
  3. Otevřete připojení TCP k "(IP adresa kamery nebo název hostitele):localPort"
    • Pokud připojení selže, vraťte požadavek BadRequest .
    • POZNÁMKA: Název hostitele je obvykle localhost
  4. Otevření připojení webového soketu remoteEndpoint k serveru (prostřednictvím proxy serveru, pokud je na zařízení nakonfigurované)
    • Nastavte hlavičku HTTP Authorization jako Bearer (remoteAuthorizationToken)
    • Nastavte hlavičku TunnelConnectionSource s hodnotou PnpDevice.
    • Nastavte User-Agent na vhodnou hodnotu, která by vám pomohla identifikovat vaši implementaci.
      • Můžete například chtít zachytit architekturu procesoru, operačního systému, model/vytvoření zařízení.
    • Pokud bylo připojení webového soketu úspěšné, vraťte 200 OK, jinak vraťte odpovídající kód chyby.
  5. Návratová odpověď (neblokovat)
  6. Implementace zařízení IoT PnP začne posílat data TCP obousměrně mezi připojením TCP serveru websocket a RTSP serverem TCP

Služba Video Analyzer bude opakovat tunnelOpen požadavky na selhání, takže v aplikaci nejsou potřeba opakování.

Odpovědi na chyby

Pokud požadavek tunnelOpen selže, měl by být text odpovědi následující:

{
    "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.
}

Příklady takových chybových odpovědí jsou:

  • Místní port není k dispozici jako port RTSP nebo RTSPS { "code": "400", "target": "(IP adresa fotoaparátu nebo název hostitele):{localPort}", "message": "Místní port není k dispozici"}
  • Časový limit nebo se nemohl připojit ke koncovému bodu RTSP { "code": "400", "target": "(IP adresa fotoaparátu nebo název hostitele):{localPort}", "message":"Nelze se připojit ke koncovému bodu RTSP"}
  • Časový limit nebo chybová odpověď z pokusu o připojení webového soketu { "code": "{WebSocket response code}", "target": "{remoteEndpoint}", "message": "{Web socket response error message}"}

Příjem dat do analyzátoru videa

Aby bylo možné zachytit a nahrát video do Video Analyzeru, musí se vytvořit topologie kanálu s povoleným tunelováním. Z této topologie se musí vytvořit a aktivovat živý kanál. Pokyny k tomuto procesu jsou zde popsané.

Příklad implementace

Pokud chcete implementovat aplikaci na zařízení a připojit ji k Nástroji Video Analyzer, obraťte videoanalyzerhelp@microsoft.com se na něj.

Viz také

Co je IoT Plug and Play?