Metode langsung Azure Video Analyzer

edge icon
Atau, lihat topik di bawah Memuat aplikasi video di layanan.


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.

Modul tepi Azure Video Analyzer avaedge memaparkan beberapa metode langsung yang dapat dipanggil dari IoT Hub. Metode langsung mewakili interaksi permintaan-balasan dengan perangkat yang mirip dengan panggilan HTTP yang langsung berhasil atau gagal (setelah batas waktu yang ditentukan pengguna). Pendekatan ini berguna untuk skenario di mana tindakan langsung tergantung pada apakah perangkat mampu merespons. Untuk mengetahui informasi selengkapnya, lihat Memahami dan memanggil metode langsung dari IoT Hub.

Topik ini menjelaskan metode, konvensi, dan skema metode ini.

Konvensi

Metode langsung didasarkan pada konvensi berikut:

  1. Metode langsung memiliki versi yang ditentukan dalam format MAJOR.MINOR (seperti yang ditunjukkan pada contoh berikut). Ini adalah nomor "@apiVersion" yang mana "1" adalah MAJOR dan "0" MINOR dalam contoh ini:

    {
      "methodName": "pipelineTopologySet",
      "payload": {
          "@apiVersion": "1.1",
          "name": "{TopologyName}",
          "properties": {
              // Desired Topology properties
          }
      }
    }
    
  2. Versi tertentu dari modul Video Analyzer mendukung semua versi minor dari panggilan metode langsung hingga versi saat ini. Dukungan di seluruh versi utama tidak dijamin.

  3. Semua metode langsung bersifat sinkron.

  4. Hasil kesalahan didasarkan pada skema kesalahan OData.

  5. Nama harus memperhatikan batasan berikut:

    • Hanya karakter alfanumerik dan tanda hubung asalkan tidak dimulai dan diakhiri dengan tanda hubung
    • Tidak ada spasi
    • Maksimum 32 karakter

Contoh respons dari metode langsung

-----------------------  Request: livePipelineList  --------------------------------------------------

{
  "@apiVersion": "1.1"
}

---------------  Response: livePipelineList - Status: 200  ---------------

{
  "value": []
}

--------------------------------------------------------------------------

Kode kesalahan

Seperti yang ditunjukkan pada contoh di bawah ini, ketika Anda mendapatkan respons kesalahan dari metode langsung, ada kode galat tingkat atas, dan informasi lebih lanjut disediakan di bawah details.

{
  "status": 400,
  "payload": {
    "error": {
      "code": "BadRequest",
      "message": "The request is invalid",
      "details": [
        {
          "code": "ApiVersionNotSupported",
          "message": "The API version '1.4' is not supported. Supported version(s): 1.0, 1.1"
        }
      ]
    }
  }
}

Berikut adalah kode galat yang digunakan di tingkat atas.

Status Kode Pesan
400 BadRequest Permintaan tidak valid
400 InvalidResource Sumber daya tidak valid
400 InvalidVersion Versi API tidak valid
402 ConnectivityRequired Modul Azure Stack Edge memerlukan konektivitas cloud agar berfungsi dengan baik.
404 NotFound Sumber daya tidak ditemukan
409 Konflik Konflik operasi
500 InternalServerError Kesalahan server internal
503 ServerBusy Server sibuk

Berikut adalah beberapa kode galat yang digunakan pada tingkat detail.

Status Kode detail Deskripsi
400 PipelineValidationError Kesalahan alur umum seperti siklus atau pemartisian, dll.
400 ModuleValidationError Kesalahan validasi khusus modul.
409 PipelineTopologyInUse Topologi alur masih direferensikan oleh satu atau beberapa alur langsung.
409 OperationNotAllowedInState Operasi yang diminta tidak dapat dilakukan dalam status saat ini.
409 ResourceValidationError Sumber daya yang direferensikan (contoh: sumber daya video) tidak dalam status valid.

Metode langsung yang didukung

Berikut adalah metode langsung yang dijelaskan oleh modul edge Video Analyzer. Skema untuk metode langsung dapat ditemukan di sini.

pipelineTopologyList

Metode langsung ini mencantumkan semua topologi alur yang telah dibuat.

Minta

{
  "@apiVersion": "1.1"
}

Respons

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-05-05T14:19:22.16Z",
        "lastModifiedAt": "2021-05-05T16:20:41.505Z"
      },
      
      // first pipeline topology payload
      
    },
      "systemData": {
        "createdAt": "2021-05-06T14:19:22.16Z",
        "lastModifiedAt": "2021-05-06T16:20:41.505Z"
      },
      
      // next pipeline topology payload
      
    }    
  ]
}

Kode status

Kondisi Kode status
Entitas ditemukan 200
Kesalahan pengguna umum Rentang 400
Entitas tidak ditemukan 404
Kesalahan server umum Rentang 500

pipelineTopologySet

Membuat topologi alur dengan nama yang diberikan jika tidak ada topologi seperti itu, atau memperbarui topologi yang ada dengan nama itu.

Aspek utama:

  • Topologi alur dapat dengan bebas diperbarui jika tidak ada alur langsung yang mereferensikannya.

  • Topologi alur dapat dengan bebas diperbarui jika semua referensi alur langsung dinonaktifkan selama:

    • Parameter yang baru ditambahkan memiliki nilai default
    • Parameter yang dihapus tidak direferensikan oleh alur apa pun
  • Hanya beberapa pembaruan topologi alur yang diizinkan saat alur langsung sedang aktif.

Minta

  {
    "methodName": "pipelineTopologySet",
    "payload": {
        "@apiVersion": "1.1",
        "name": "{TopologyName}",
        "properties": {
            // Desired pipeline topology properties
        }
    }
  }

Respons

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-05-11T18:16:46.491Z",
           "lastModifiedAt": "2021-05-11T18:16:46.491Z"
        },
        "name": "{TopologyName}",
        "properties": {
            // Complete pipeline topology
        }
    }
  }

Kode status

Kondisi Kode status Kode kesalahan terperinci
Entitas yang ada diperbarui 200 T/A
Entitas baru dibuat 201 T/A
Kesalahan pengguna umum Rentang 400
Kesalahan validasi alur 400 PipelineValidationError
Kesalahan validasi modul 400 ModuleValidationError
Kesalahan server umum Rentang 500

pipelineTopologyGet

Ini mengambil topologi alur dengan nama yang ditentukan, jika ada.

Minta

  {
        "@apiVersion": "1.1",
        "name": "{TopologyName}"       
  }

Respons

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-05-06T10:28:04.560Z",
          "lastModifiedAt": "2021-05-06T10:28:04.560Z"
        },
        "name": "{TopologyName}",
        // Complete pipeline topology
      }
    ]
  }
}

Kode status

Kondisi Kode status
Berhasil 200
Kesalahan pengguna umum Rentang 400
Kesalahan server umum Rentang 500

pipelineTopologyDelete

Menghapus topologi alur tunggal.

Minta

  {
    "methodName": "pipelineTopologyDelete",
    "payload": {
        "@apiVersion": "1.1",
        "name": "{TopologyName}"
    }
  }

Respons

{
    "status": 200,
    "payload": null
}

Kode status

Kondisi Kode status Kode kesalahan terperinci
Entitas dihapus 200 T/A
Entitas tidak ditemukan 204 T/A
Kesalahan pengguna umum Rentang 400
Topologi alur sedang direferensikan oleh satu atau beberapa alur 409 PipelineTopologyInUse
Kesalahan server umum Rentang 500

livePipelineList

Mencantumkan semua alur langsung.

Minta

  {
        "@apiVersion": "1.1"
  }

Respons

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-05-05T14:19:22.16Z",
        "lastModifiedAt": "2021-05-05T16:20:41.505Z"
      },      
      // first live pipeline payload  
    },
      "systemData": {
        "createdAt": "2021-05-06T14:19:22.16Z",
        "lastModifiedAt": "2021-05-06T16:20:41.505Z"
      },
      // next live pipeline payload
    }    
  ]
}

Kode status

Kondisi Kode status
Entitas ditemukan 200
Kesalahan pengguna umum Rentang 400
Entitas tidak ditemukan 404
Kesalahan server umum Rentang 500

livePipelineSet

Membuat alur langsung dengan nama yang diberikan jika tidak ada alur langsung seperti itu, atau memperbarui alur langsung yang ada dengan nama itu.

Aspek utama:

  • Alur langsung dapat dengan bebas diperbarui saat dalam status "Dinonaktifkan". Dalam status lain, hanya beberapa pembaruan yang diizinkan.
  • Alur langsung divalidasi ulang pada setiap pembaruan.

Minta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}",
        "properties": {
            // Desired live pipeline properties
        }
  }

Respons

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-05-11T18:16:46.491Z",
           "lastModifiedAt": "2021-05-11T18:16:46.491Z"
        },
        "name": "{livePipelineName}",
        "properties": {
            // Complete live pipeline
        }
    }
  }

Kode status

Kondisi Kode status Kode galat detail
Entitas yang ada diperbarui 200 T/A
Entitas baru dibuat 201 T/A
Kesalahan pengguna umum Rentang 400 T/A
Kesalahan validasi alur langsung 400 PipelineValidationError
Kesalahan validasi modul 400 ModuleValidationError
Kesalahan validasi sumber daya 409 ResourceValidationError
Kesalahan server umum Rentang 500 T/A

livePipelineDelete

Menghapus satu alur langsung.

Aspek utama:

  • Hanya alur langsung yang dinonaktifkan yang dapat dihapus.

Minta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"
  }

Respons

  {
    "status": 200,
    "payload": null
  }

Kode status

Kondisi Kode status Kode kesalahan terperinci
Alur langsung berhasil dihapus 200 T/A
Alur langsung tidak ditemukan 204 T/A
Kesalahan pengguna umum Rentang 400
Alur tidak dalam status "Dinonaktifkan" 409 OperationNotAllowedInState
Kesalahan server umum Rentang 500

livePipelineGet

Ini mirip dengan livePipelineTopologyGet. Ini mengambil alur langsung dengan nama yang ditentukan, jika ada.

Minta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"       
  }

Respons

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-05-06T10:28:04.560Z",
          "lastModifiedAt": "2021-05-06T10:28:04.560Z"
        },
        "name": "{livePipelineName}",
        // Complete live pipeline
      }
    ]
  }
}

Kode status

Kondisi Kode status
Berhasil 200
Kesalahan pengguna umum Rentang 400
Kesalahan server umum Rentang 500

livePipelineActivate

Mengaktifkan alur langsung.

Aspek utama

  • Metode kembali ketika alur langsung dalam status "Mengaktifkan" atau "Diaktifkan".
  • Operasi Daftar/Kumpulan pada alur langsung akan mengembalikan status saat ini.
  • Metode ini dapat dipanggil selama alur langsung tidak dalam status "Menonaktifkan" (sementara).
  • Idempotency:
    • Memanggil livePipelineActivate pada alur langsung yang sudah dalam status "Mengaktifkan" berperilaku dengan cara yang sama seperti jika alur langsung dinonaktifkan.
    • Mengaktifkan alur yang berada dalam status "Aktif" akan segera mengembalikan kode keberhasilan.

Minta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"
  }

Respons

{
    "status": 200,
    "payload": null
}

Kode status

Kondisi Kode status Kode kesalahan terperinci
Alur berhasil diaktifkan 200 T/A
Entitas baru dibuat 201 T/A
Kesalahan pengguna umum Rentang 400
Kesalahan validasi modul 400 ModuleValidationError
Kesalahan validasi sumber daya 409 ResourceValidationError
Alur langsung dalam status menonaktifkan 409 OperationNotAllowedInState
Kesalahan server umum Rentang 500

livePipelineDeactivate

Menonaktifkan alur langsung. Menonaktifkan alur dengan baik menonaktifkan pemrosesan video dan memastikan bahwa semua peristiwa dan video yang di-cache di edge berkomitmen ke cloud, kapan pun berlaku.

Aspek utama:

  • Metode hanya kembali ketika alur langsung dinonaktifkan.
  • Metode ini dapat dipanggil selama alur langsung tidak dalam status "Mengaktifkan" (sementara).
  • Alur masuk ke status "Menonaktifkan" saat dinonaktifkan.
    • Operasi Daftar/Kumpulan pada alur langsung akan mengembalikan status saat ini.
    • Penonaktifan selesai ketika semua media telah diunggah ke cloud (jika alur memiliki simpul sink video).
  • Idempotency:
    • Memanggil livePipelineDeactivate pada alur langsung yang sudah dalam status "Menonaktifkan" berperilaku dengan cara yang sama seperti jika alur langsung berada dalam status "Aktif".
    • Menonaktifkan alur yang berada dalam status "Tidak Aktif" akan segera mengembalikan kode keberhasilan.

Minta

  {
    "@apiVersion": "1.1",
    "name": "{livePipelineName}"
  }

Respons

{
 "status": 200,
 "payload": null
}
Kondisi Kode status Kode kesalahan terperinci
Alur berhasil diaktifkan 200 T/A
Entitas baru dibuat 201 T/A
Kesalahan pengguna umum Rentang 400
Alur dalam status aktif 409 OperationNotAllowedInState
Kesalahan server umum Rentang 500

remoteDeviceAdapterList

Mencantumkan semua adaptor perangkat jarak jauh. Modul tepi Video Analyzer dapat bertindak sebagai gateway transparan untuk video, memungkinkan perangkat IoT untuk mengirim video ke cloud dari belakang firewall. Adaptor perangkat jarak jauh harus dibuat untuk setiap perangkat IoT tersebut. Komunikasi antara cloud dan perangkat IoT kemudian akan mengalir melalui modul tepi Video Analyzer.

Minta

  {
        "@apiVersion": "1.1"
  }

Respons

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-10-05T14:19:22.16Z",
        "lastModifiedAt": "2021-10-05T16:20:41.505Z"
      },      
      // first remote device adapter payload
    },
      "systemData": {
        "createdAt": "2021-10-06T14:19:22.16Z",
        "lastModifiedAt": "2021-10-06T16:20:41.505Z"
      },
      // next remote device adapter  payload
    }    
  ]
}

Kode status

Kondisi Kode status
Entitas ditemukan 200
Kesalahan pengguna umum Rentang 400
Entitas tidak ditemukan 404
Kesalahan server umum Rentang 500

remoteDeviceAdapterSet

Membuat adaptor perangkat jarak jauh dengan nama yang diberikan jika adaptor tersebut tidak ada, atau memperbarui adaptor yang ada dengan nama tersebut. Dalam payload respons, dan dalam panggilan remoteDeviceAdapterList atau remoteDeviceAdapterGet, info masuk atau rahasia apa pun dihilangkan.

Minta

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}",
        "properties": {
            // Desired remote device adapter properties
        }
  }

Respons

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-10-11T18:16:46.491Z",
           "lastModifiedAt": "2021-10-11T18:16:46.491Z"
        },
        "name": "{remoteDeviceAdapterName}",
        "properties": {
            // Remote device adapter properties, except the credentials
        }
    }
  }

Kode status

Kondisi Kode status Kode kesalahan terperinci
Entitas yang ada diperbarui 200 T/A
Entitas baru dibuat 201 T/A
Kesalahan pengguna umum Rentang 400 T/A
Kesalahan validasi adaptor perangkat jarak jauh 400 RemoteDeviceAdapterValidationError
Kesalahan validasi modul 400 ModuleValidationError
Kesalahan validasi sumber daya 409 ResourceValidationError
Kesalahan server umum Rentang 500 T/A

remoteDeviceAdapterGet

Ini mirip dengan livePipelineTopologyGet. Mengambil adaptor perangkat jarak jauh dengan nama yang ditentukan, jika ada (info masuk atau rahasia apa pun dihilangkan).

Minta

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}"       
  }

Respons

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-10-06T10:28:04.560Z",
          "lastModifiedAt": "2021-10-06T10:28:04.560Z"
        },
        "name": "{remoteDeviceAdapterName}",
        // Remote device adapter properties, except the credentials
      }
    ]
  }
}

Kode status

Kondisi Kode status
Berhasil 200
Kesalahan pengguna umum Rentang 400
Kesalahan server umum Rentang 500

remoteDeviceAdapterDelete

Menghapus adaptor perangkat jarak jauh tunggal jika ada.

Minta

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}"
  }

Respons

  {
    "status": 200,
    "payload": null
  }

Kode status

Kondisi Kode status Kode kesalahan terperinci
Adaptor perangkat jarak jauh berhasil dihapus 200 T/A
Adaptor perangkat jarak jauh tidak ditemukan 204 T/A
Kesalahan pengguna umum Rentang 400
Kesalahan server umum Rentang 500

onvifDeviceDiscover dan onvifDeviceGet

Detail panggilan ini diberikan dalam artikel tentang menemukan perangkat berkemampuan ONVIF.

Langkah berikutnya

Skema konfigurasi Modul Kembar