Menyambungkan perangkat ke Azure Video Analyzer

cloud icon
Atau, lihat topik di bawah Buat aplikasi video cerdas di tepi.


Catatan

Kami menghentikan layanan pratinjau Azure Video Analyzer, Anda disarankan untuk mentransisikan aplikasi Anda dari Video Analyzer sebelum 1 Desember 2022.

Azure Video Analyzer for Media tidak terpengaruh oleh penghentian ini. Ia sekarang berganti nama menjadi Azure Video Indexer. Klik di sini untuk membaca lebih lanjut.

Tindakan Diperlukan: Untuk meminimalkan gangguan pada beban kerja Anda, transisikan aplikasi Anda dari Video Analyzer per saran yang dijelaskan dalam panduan ini sebelum 1 Desember 2022. Setelah 1 Desember 2022, akun Azure Video Analyzer Anda tidak akan berfungsi lagi. Mulai 2 Mei 2022 Anda tidak akan dapat membuat akun Video Analyzer baru.

Untuk mengambil dan merekam video dari perangkat, layanan Azure Video Analyzer perlu membuat koneksi RTSP ke perangkat tersebut. Jika perangkat berada di belakang firewall, koneksi tersebut diblokir, dan mungkin tidak selalu dapat membuat aturan untuk mengizinkan koneksi masuk dari Azure. Untuk mendukung perangkat tersebut, Anda dapat membuat dan memasang implementasi perangkat Azure IoT Plug and Play yang mendengarkan perintah yang dikirim melalui IoT Hub dari Video Analyzer lalu membuka tunnel websocket aman ke layanan. Setelah tunnel tersebut dibuat, Video Analyzer kemudian dapat tersambung ke server RTSP.

Gambaran Umum

Artikel ini memberikan konsep tingkat tinggi tentang membangun implementasi perangkat Azure IoT PnP yang dapat mengaktifkan Video Analyzer untuk mengambil dan merekam video dari perangkat.

Aplikasi harus:

  1. Berjalan sebagai perangkat IoT
  2. Mengimplementasikan antarmuka IoT PnP dengan perintah khusus (tunnelOpen)
  3. Setelah menerima perintah seperti itu:
    • Memvalidasi argumen yang diterima
    • Membuka koneksi websocket aman ke URL yang disediakan menggunakan token yang disediakan
    • Meneruskan byte websocket ke koneksi TCP server RTSP kamera

Connect devices to the cloud

Berjalan sebagai Perangkat IoT

Aplikasi Video Analyzer akan disebarkan sebagai plugin Video Analyzer PnP. Ini memerlukan penggunaan salah satu SDK perangkat Azure IoT untuk membangun implementasi perangkat PnP IoT Anda. Daftarkan perangkat IoT dengan IoT Hub Anda untuk mendapatkan ID Perangkat IoT Hub dan String Koneksi Perangkat.

Mengonfigurasi Klien Perangkat IoT

  • Atur OPTION_MODEL_ID ke “dtmi:azure:videoanalyzer:WebSocketTunneling;1” untuk mendukung kueri PnP
  • Pastikan perangkat Anda menggunakan MQTT atau MQTT melalui protokol WebSockets untuk tersambung ke Azure IoT Hub
    • Sambungkan ke IoT Hub melalui proksi HTTPS jika dikonfigurasi pada perangkat IoT
  • Daftarkan panggilan balik untuk metode langsung tunnelOpen

Implementasikan Antarmuka PnP IoT untuk Video Analyzer

Model Digital Twins Definition Language (DTDL) berikut menjelaskan perangkat yang dapat tersambung ke 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"
            }
          ]
        }
      }
    }
  ]
}

Perangkat IoT mendaftarkan metode langsungtunnelOpen, yang isi permintaannya akan memiliki parameter remoteEndpoint, remoteAuthorizationToken, dan localPort seperti yang diperlihatkan di atas.

Mengimplementasikan metode langsung tunnelOpen

Saat metode langsung tunnelOpen dipanggil oleh layanan Video Analyzer, aplikasi perlu melakukan hal berikut:

  1. Mendapatkan port RTSP perangkat yang tersedia
  2. Membandingkan nilai localPort yang ditentukan dalam panggilan metode langsung dengan port yang tersedia
    • Mengembalikan BadRequest jika tidak ada yang cocok (lihat bagian Respons Kesalahan di bawah)
  3. Membuka koneksi TCP ke "(IP kamera atau nama host):localPort"
    • Mengembalikan BadRequest jika koneksi gagal
    • CATATAN: nama host biasanya localhost
  4. Membuka koneksi soket web ke remoteEndpoint (melalui proksi jika dikonfigurasi pada perangkat)
    • Mengatur header HTTP "Otorisasi" sebagai "Token pembawa (remoteAuthorizationToken)"
    • Mengatur header "TunnelConnectionSource" dengan nilai "PnpDevice"
    • Mengatur Pengguna-Agen ke nilai yang sesuai yang akan membantu Anda mengidentifikasi implementasi Anda.
      • Misalnya, Anda mungkin ingin mengambil arsitektur CPU, OS, model/merek perangkat.
    • Mengembalikan 200 OK jika koneksi soket web berhasil, jika tidak mengembalikan kode kesalahan yang sesuai
  5. Respons balasan (jangan blokir)
  6. Implementasi perangkat IoT PnP mulai mengirimkan data TCP secara dua arah antara websocket dan koneksi TCP server RTSP

Layanan Video Analyzer akan mencoba lagi permintaan tunnelOpen yang gagal, jadi aplikasi tidak perlu mencoba lagi.

Respons kesalahan

Jika permintaan tunnelOpen gagal, isi respons harus sebagai berikut

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

Contoh respons kesalahan tersebut adalah:

  • Port lokal tidak tersedia sebagai port RTSP atau RTSPS { "code": "400", "target": "(camera IP or hostname):{localPort}", "message": "Local port is not available"}
  • Batas waktu/tidak dapat tersambung ke titik akhir RTSP { "code": "400", "target": "(camera IP or hostname):{localPort}", "message":"Could not connect to RTSP endpoint"}
  • Waktu tunggu/respons kesalahan dari upaya koneksi soket web { "code": "{WebSocket response code}", "target": "{remoteEndpoint}", "message": "{Web socket response error message}"}

Penyerapan ke Video Analyzer

Untuk mengambil dan merekam video ke Video Analyzer, topologi alur dengan penerowongan diaktifkan harus dibuat. Dari topologi tersebut, sebuah alur langsung harus dibuat dan diaktifkan. Instruksi untuk proses ini diuraikan di sini.

Contoh implementasi

Hubungi videoanalyzerhelp@microsoft.com jika Anda ingin mengimplementasikan aplikasi pada perangkat Anda untuk menyambungkannya ke Video Analyzer.

Lihat juga

Apa itu IoT Plug and Play?