Metode langsung Azure Video Analyzer
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:
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 } } }
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.
Semua metode langsung bersifat sinkron.
Hasil kesalahan didasarkan pada skema kesalahan OData.
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.
- Perhatikan bahwa tidak boleh ada alur langsung yang merujuk pada topologi alur yang sedang dihapus. Jika ada alur langsung seperti itu, Anda akan menerima kesalahan
TopologyInUse
.
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.
- Memanggil
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.
- Memanggil
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.