Csatlakozás az Azure Video Analyzerbe

felhő ikon
Másik lehetőségként tekintse meg az Intelligens videóalkalmazások létrehozása a peremhálózaton témakört.


Egy eszközről származó videó rögzítéséhez és rögzítéséhez az Azure Video Analyzer szolgáltatásnak RTSP-kapcsolatot kell létesítenie vele. Ha az eszköz tűzfal mögött található, az ilyen kapcsolatok le vannak tiltva, és nem mindig lehet szabályokat létrehozni az Azure-ból bejövő kapcsolatok engedélyezése érdekében. Az ilyen eszközök támogatásához olyan Azure IoT Plug and Play-eszközmegépítést építhet ki és telepíthet, amely a Video Analyzer IoT Hub-on keresztül küldött parancsokat figyel, majd megnyit egy biztonságos websocket-alagutat a szolgáltatás felé. Az ilyen alagút létrejötte után a Video Analyzer képes csatlakozni az RTSP-kiszolgálóhoz.

Áttekintés

Ez a cikk magas szintű fogalmakat tartalmaz az Azure IoT PnP-eszköz megvalósításával kapcsolatban, amely lehetővé teszi a Video Analyzer számára az eszközről származó videók rögzítését és rögzítését.

Az alkalmazásnak a következőt kell:

  1. Futtatás IoT-eszközként
  2. Az IoT PnP-felület megvalósítása egy adott paranccsal ( tunnelOpen )
  3. Egy ilyen parancs fogadatáskor:
    • A kapott argumentumok ellenőrzése
    • Nyisson meg egy biztonságos websocket-kapcsolatot a megadott URL-címre a megadott jogkivonattal
    • A websocket bájtok továbbítása a kamera RTSP-kiszolgálói TCP-kapcsolatára

Csatlakozás a felhőbe

Futtatás IoT-eszközként

A Video Analyzer alkalmazás videoelemző PnP beépülő modulként lesz telepítve. Ehhez az IoT PnP-eszköz implementációja érdekében az egyik Azure IoT eszköz-SDK-t kell használni. Regisztrálja az IoT-eszközt a IoT Hub, hogy IoT Hub eszközazonosítót és az eszközkapcsolati sztringet.

IoT-eszköz ügyfélkonfigurációja

  • Állítsa OPTION_MODEL_ID “dtmi:azure:videoanalyzer:WebSocketTunneling;1” pnP-lekérdezések támogatására 
  • Győződjön meg arról, hogy az eszköz az MQTT vagy az MQTT protokollt használja a WebSockets protokollon keresztül a Azure IoT Hub
    • Csatlakozás https IoT Hub proxyn keresztüli csatlakozás, ha az IoT-eszközön van konfigurálva 
  • Visszahívás regisztrálása közvetlen  tunnelOpen   metódushoz

A Video Analyzer IoT PnP interfészének megvalósítása

Az alábbi Digital Twins Definíciós nyelv (DTDL) modell egy olyan eszközt ír le, amely képes csatlakozni a Video Analyzerhez.

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

Az IoT-eszköz regisztrál egy közvetlen metódust, amelyben a kérelem törzse a , és paramétereket fogja  tunnelOpen használni a fent látható remoteEndpoint remoteAuthorizationToken localPort módon.

A közvetlen metódus implementálja tunnelOpen

Amikor a Video Analyzer szolgáltatás meghívja a közvetlen metódust, az alkalmazásnak a következőket tunnelOpen kell megtennie:

  1. Szerezze be az eszköz elérhető RTSP-port(okat)
  2. Hasonlítsa össze a közvetlen localPort metódushívásban megadott értéket az elérhető portokkal
    • Adja vissza a BadRequest választ, ha nem található egyezés (lásd az alábbi Hibaválaszok szakaszt)
  3. Nyisson meg egy TCP-kapcsolatot a (kamera IP-címe vagy állomásneve): localPort "
    • BadRequest visszaadása, ha a kapcsolat meghiúsul
    • MEGJEGYZÉS: az állomásnév általában localhost
  4. Nyisson meg egy webes szoftvercsatorna-kapcsolatot a (az eszközön konfigurált remoteEndpoint proxyn keresztül)
    • Állítsa a HTTP "Authorization" fejlécet "Bearer (remoteAuthorizationToken)" (Bearer (remoteAuthorizationToken)" fejlécre
    • Állítsa a "TunnelConnectionSource" fejlécet a "PnpDevice" értékre
    • Állítsa User-Agent értékét egy megfelelő értékre, amely segít azonosítani az implementációt.
      • Előfordulhat például, hogy rögzíteni szeretné a CPU, az operációs rendszer, az eszköz modelljének/make-nek az architektúráját.
    • Adja vissza a 200 OK kódot, ha a webes szoftvercsatorna-kapcsolat sikeres volt, máskülönben adja vissza a megfelelő hibakódot
  5. Válasz visszaadva (tiltás)
  6. Az IoT PnP-eszköz implementációja kétirányú TCP-adatokat kezd küldeni a websocket és az RTSP-kiszolgáló TCP-kapcsolata között

A Video Analyzer szolgáltatás hiba esetén újrapróbálkozásokat fog kérni, ezért az alkalmazásban nincs szükség tunnelOpen újrapróbálkozásra.

Hibaválaszok

Ha a kérés meghiúsul, akkor a válasz törzsének a tunnelOpen következőnek kell lennie:

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

Ilyen hibaválasz például a következő:

  • A helyi port nem érhető el RTSP- vagy RTSPS-portként { "code": "400", "target": "(camera IP or hostname):{localPort}", "message": "Local port is not available"}
  • Időtúllépés/nem lehetett csatlakozni az RTSP-végponthoz { "code": "400", "target": "(camera IP or hostname):{localPort}", "message":"Could not connect to RTSP endpoint"}
  • Időtúllépési/hibaválasz a webes szoftvercsatorna-kapcsolódási kísérlettől { "code": "{WebSocket válaszkód}", "target": "{remoteEndpoint}", "message": "{Web socket response error message}"}

A Video Analyzerbe való behívás

Ahhoz, hogy videót rögzítsünk és rögzítsünk a Video Analyzerben, létre kell hoznunk egy folyamat-topológiát engedélyezett bújtatással. Ebből a topológiából élő folyamatot kell létrehozni és aktiválni. A folyamatra vonatkozó utasításokat itt ismertetjuk.

Példa implementációra

Lépjen kapcsolatba a videóelemzővel, ha olyan alkalmazást szeretne megvalósítani az eszközén, amely videoanalyzerhelp@microsoft.com csatlakoztatja azt a Video Analyzerhez.

Lásd még:

Mi az IoT Plug and Play?