Moderasi video membantu Anda mendeteksi konten berisiko atau tidak sesuai dalam video, termasuk deteksi pornografi, konten teroris, pelanggaran iklan, adegan tidak pantas, logo, serta anti-spam audio. Topik ini menjelaskan cara menggunakan API untuk mendeteksi konten dalam video secara asinkron.
Moderasi video asinkron
Gunakan API /green/video/asyncscan untuk melakukan moderasi video asinkron.
Anda dapat memanggil operasi ini untuk membuat tugas moderasi video asinkron. Lihat Sintaks permintaan untuk mempelajari cara menyusun permintaan HTTP, atau gunakan permintaan yang telah dibuat sebelumnya dari Ikhtisar SDK.
Billing
Ini adalah operasi API berbayar. Untuk informasi lebih lanjut tentang penagihan, lihat Harga Content Moderation.
Jika Anda melakukan moderasi konten di beberapa skenario, biaya akan dikenakan secara kumulatif untuk semua skenario tersebut. Biaya setiap skenario dihitung berdasarkan jumlah frame video yang dimoderasi dikalikan dengan harga satuan skenario tersebut. Penggunaan fitur anti-spam audio menimbulkan biaya tambahan yang dihitung berdasarkan durasi video dikalikan dengan harga satuan fitur tersebut.
Objek yang dimoderasi
Anda dapat memanggil operasi ini untuk memoderasi file video atau aliran video. File video dapat ditentukan dengan mengirimkan urutan frame yang ditangkap atau dengan memberikan URL video.
Return Results
Tugas deteksi asinkron tidak mengembalikan hasil secara real time. Anda harus menggunakan callback atau polling untuk mengambil hasilnya, yang disimpan hingga satu jam.
Dapatkan hasil menggunakan callback: Saat mengirimkan tugas moderasi asinkron, sertakan parameter callback dalam permintaan untuk menerima hasil moderasi secara otomatis. Untuk informasi lebih lanjut, lihat Parameter permintaan.
Gunakan polling: Kirim tugas moderasi asinkron tanpa parameter callback. Kemudian, panggil operasi kueri hasil untuk mendapatkan hasil moderasi. Untuk informasi lebih lanjut, lihat Deskripsi operasi /green/video/results.
Persyaratan video
-
URL file video harus menggunakan protokol HTTP atau HTTPS.
-
Format file video yang didukung: AVI, FLV, MP4, MPG, ASF, WMV, MOV, WMA, RMVB, RM, FLASH, dan TS.
-
Batas ukuran video: Ukuran maksimum default untuk satu file video adalah 200 MB.
Jika Anda perlu memproses video yang lebih besar dari 200 MB, bagi video tersebut menjadi segmen-segmen yang lebih kecil. Atau, bergabunglah dengan grup DingTalk (ID: 35573806) untuk menghubungi dukungan teknis dan meminta peningkatan batas.
-
Protokol aliran video yang didukung: RTMP, HLS, HTTP-FLV, dan RTSP.
-
Batas durasi aliran video: Satu tugas deteksi aliran video berjalan maksimal selama 24 jam. Tugas akan berakhir secara otomatis jika melebihi batas ini.
-
Waktu deteksi video bergantung pada waktu pengunduhan video. Pastikan layanan penyimpanan tempat file video disimpan stabil dan andal. Kami merekomendasikan penggunaan Alibaba Cloud OSS untuk menyimpan file video Anda.
Tabel 1.Deskripsi kasus penggunaan
Kasus Penggunaan
Deskripsi
Klasifikasi Hasil Deteksi
Deteksi pornografi video
Mendeteksi apakah video berisi konten pornografi.
Normal, Pornografi
Deteksi konten kekerasan, terorisme, dan sensitif secara politik dalam video
Mendeteksi apakah video berisi konten kekerasan, terorisme, atau sensitif secara politik.
Normal, Kekerasan/Terorisme/Sensitif Secara Politik
Deteksi adegan tidak pantas dalam video
Mendeteksi apakah video berisi adegan tidak pantas.
Normal, Adegan Tidak Pantas (seperti layar hitam, layar putih)
Logo video
Mendeteksi apakah video berisi logo tertentu.
Normal, Logo
Deteksi pelanggaran teks dan gambar dalam video
Mendeteksi apakah video berisi iklan atau konten teks terlarang.
Normal, Iklan atau Pelanggaran Teks
Deteksi pelanggaran audio dalam video
CatatanSkenario ini hanya didukung melalui API deteksi video asinkron. Untuk informasi lebih lanjut, lihat Deteksi asinkron.
Mendeteksi apakah audio dalam video berisi informasi terlarang.
CatatanBahasa pengenalan default adalah Bahasa Tionghoa. Untuk mengenali konten Bahasa Inggris, hubungi manajer akun Anda.
Normal, Spam, Iklan, Sensitif Secara Politik, Kekerasan/Terorisme, Bahasa Menghina, Pornografi, Flooding, Konten Terlarang, Kustom (seperti pencocokan kata kunci kustom)
-
Batas QPS
Batas queries per second (QPS) untuk API ini adalah 50 per pengguna, dengan batas konkurensi 20 aliran. Artinya, maksimal 20 tugas dapat diproses secara bersamaan. Untuk meningkatkan batas konkurensi, hubungi manajer bisnis Anda. Melebihi batas ini akan memicu pembatasan kecepatan, yang dapat berdampak pada bisnis Anda. Rencanakan pemanggilan Anda secara tepat.
Jika pemrosesan real-time bukan prioritas utama, kami merekomendasikan agar Anda mengaktifkan mode deteksi offline. Dalam mode ini, tugas deteksi dimulai dalam waktu 24 jam setelah pengiriman.
Parameter permintaan
Parameter | Tipe | Wajib | Contoh | Deskripsi |
bizType | String | Tidak | default | Bidang ini mengidentifikasi skenario bisnis Anda. Anda dapat membuat skenario bisnis di Konsol Content Moderation. Untuk informasi lebih lanjut, lihat Menyesuaikan aturan moderasi. |
live | Boolean | Tidak | false | Menentukan apakah akan memoderasi aliran langsung. Nilai yang valid:
|
offline | Boolean | Tidak | false | Mengaktifkan mode moderasi offline. Nilai yang valid:
Catatan Parameter ini hanya berlaku untuk moderasi video sesuai permintaan (VOD). Tidak diperlukan untuk moderasi aliran langsung. |
scenes | StringArray | Ya | ["porn"] | Menentukan skenario moderasi video. Nilai yang valid:
|
audioScenes | StringArray | Tidak | ["antispam"] | Skenario moderasi audio. Satu-satunya nilai yang valid adalah antispam untuk anti-spam audio. Jika Anda mengabaikan parameter ini, layanan hanya akan memoderasi konten video. Jika ditentukan, layanan juga akan memoderasi trek audio. Catatan Untuk memoderasi audio dalam video, Anda harus memberikan URL video menggunakan parameter url dalam objek task. Moderasi audio tidak didukung saat Anda mengirimkan konten video sebagai urutan tangkapan frame menggunakan parameter frames dalam objek task. |
callback | String | Tidak | http://www.aliyundoc.com | URL tempat Anda ingin menerima notifikasi callback untuk hasil deteksi. URL harus menggunakan protokol HTTP atau HTTPS. Jika Anda mengosongkan parameter ini, Anda harus melakukan polling secara berkala untuk mendapatkan hasil deteksi. Antarmuka
Catatan
Setelah server callback Anda menerima notifikasi hasil, server tersebut harus mengembalikan kode status HTTP 200 untuk menunjukkan keberhasilan. Kode status lain dianggap sebagai kegagalan. Jika notifikasi gagal, Content Moderation akan mencoba ulang hingga 16 kali sampai berhasil. Jika masih gagal setelah 16 kali percobaan, tidak ada upaya lebih lanjut yang dilakukan. Kami merekomendasikan agar Anda memeriksa status titik akhir callback Anda. |
seed | String | Tidak | abc**** | String acak yang digunakan untuk signature dalam permintaan notifikasi callback. String dapat berisi huruf, angka, dan garis bawah (_), serta harus terdiri dari 64 karakter atau kurang. Sesuaikan string ini untuk memverifikasi asal permintaan callback. Catatan
Parameter ini wajib saat Anda menggunakan callback. |
cryptType | String | Tidak | SHA256 | Jika Anda menggunakan notifikasi callback, parameter ini menentukan algoritma penghashan untuk signature callback (checksum). Content Moderation menghasilkan checksum dengan meng-hash string (gabungan dari Alibaba Cloud account ID + seed + content) menggunakan algoritma yang ditentukan sebelum mengirimkannya ke URL callback Anda. Nilai yang valid:
|
tasks | JSONArray | Ya | Array JSON objek tugas, masing-masing menentukan objek moderasi. Anda dapat mengirimkan hingga 100 tugas dalam satu permintaan, asalkan konkurensi tugas minimal 100. Untuk informasi lebih lanjut tentang struktur objek tugas, lihat task. |
Tabel 1. task
Parameter | Tipe | Wajib | Contoh | Deskripsi |
clientInfo | JSONObject | Tidak | {"userId":"12023****","userNick":"Mike","userType":"others"} | Informasi klien. Untuk informasi lebih lanjut, lihat parameter kueri umum di Parameter umum. Server menggabungkan clientInfo global dengan clientInfo individual yang ditentukan untuk permintaan. Catatan
clientInfo individual memiliki prioritas lebih tinggi. |
dataId | String | Tidak | videoId**** | ID data objek deteksi. ID ini dapat berisi huruf besar dan kecil, angka, garis bawah (_), tanda hubung (-), dan titik (.), serta harus terdiri dari 128 karakter atau kurang. Gunakan ID ini untuk mengidentifikasi data bisnis Anda secara unik. |
liveId | String | Tidak | liveId**** | ID aliran video langsung. Parameter ini digunakan untuk mencegah tugas deteksi duplikat untuk aliran video langsung. Jika Anda mengirimkan parameter ini, sistem akan memeriksa apakah tugas deteksi sedang berlangsung berdasarkan |
url | String | Tidak | http://www.aliyundoc.com/a.flv | URL HTTP atau HTTPS publik. Panjang URL tidak boleh melebihi 2.048 karakter. Catatan Tentukan salah satu dari frames atau url. Jika Anda menentukan parameter url, Anda akan dikenai biaya berdasarkan metode penagihan untuk pengiriman URL video. |
frames | JSONArray | Tidak | Informasi frame untuk video yang akan dideteksi. Setiap elemen dalam frames adalah struct. Untuk deskripsi detail struktur setiap elemen, lihat frame. Catatan Tentukan salah satu dari frames atau url. Jika Anda mengirimkan parameter url, Anda akan dikenai biaya untuk pengiriman URL video. | |
framePrefix | String | Tidak | http://www.aliyundoc.com/video/ | Awalan URL frame. Awalan ini digabungkan dengan |
interval | Integer | Tidak | 1 | Interval pengambilan frame video. Satuan: detik. Nilai yang valid: 1 hingga 600. Nilai default adalah 1. |
maxFrames | Integer | Tidak | 200 | Jumlah maksimum frame yang diambil dari video. Nilai yang valid: 5 hingga 3.600. Nilai default adalah 200. Untuk meminta batas yang lebih tinggi, hubungi kami melalui Dukungan dan Layanan. Catatan
|
Tabel 2. frame
Parameter | Tipe | Wajib | Contoh | Deskripsi |
url | String | Tidak | http://www.aliyundoc.com/0B860000586C0A0300038A0460000 | URL frame video digabungkan dengan |
offset | Integer | Tidak | 10 | Offset waktu frame dari awal video, dalam satuan detik. |
Parameter respons
Parameter | Tipe | Contoh | Deskripsi |
taskId | String | taskId**** | ID tugas moderasi. |
dataId | String | videoId**** | ID data objek deteksi. Catatan
Jika dataId dikirimkan dalam permintaan deteksi, dataId yang sama akan dikembalikan di sini. |
Contoh
Permintaan contoh
Kirimkan frame video
http(s)://[Endpoint]/green/video/asyncscan &<common request parameters> { "scenes": [ "porn" ], "tasks": [ { "dataId": "videoId****", "frames": [ { "offset": 10, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460000" }, { "offset": 20, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460001" }, { "offset": 30, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460002" }, { "offset": 40, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003" }, { "offset": 50, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A0460003" }, { "offset": 60, "url": "http://www.aliyundoc.com/0B860000586C0A0300038A046000x" } ] } ] }Kirimkan file video
http(s)://[Endpoint]/green/video/asyncscan &<common request parameters> { "scenes": [ "porn" ], "audioScenes": [ "antispam" ], "tasks": [ { "dataId": "videoId****", "url": "http://www.aliyundoc.com/a.mp4", "interval": 1, "maxFrames": 200 } ] }Kirimkan aliran langsung
http(s)://[Endpoint]/green/video/asyncscan &<common request parameters> { "scenes": [ "porn" ], "live": true, "tasks": [ { "dataId": "videoId****", "url": "http://www.aliyundoc.com/a.flv", "interval": 1, "maxFrames": 200 } ] }
Respons sukses
{
"code": 200,
"msg": "OK",
"requestId": "requestID****",
"data": [
{
"dataId": "videoId****",
"taskId": "taskId****"
}
]
}Kueri hasil moderasi asinkron
API: /green/video/results
Gunakan operasi ini untuk mengkueri hasil tugas moderasi asinkron. Untuk menyusun permintaan HTTP, lihat sintaks permintaan. Anda juga dapat menggunakan permintaan yang telah dibuat sebelumnya dengan SDK, sebagaimana dijelaskan dalam Ikhtisar SDK.
Billing
Operasi API ini gratis.
Ketersediaan hasil
Tetapkan interval polling 30 detik, artinya Anda mengkueri hasil 30 detik setelah mengirimkan tugas deteksi asinkron. Hasil disimpan hingga satu jam dan akan dibuang jika tidak diambil dalam waktu tersebut.
Batas QPS
Batas queries per second (QPS) untuk API ini adalah 50 per pengguna. Melebihi batas ini akan memicu pembatasan kecepatan, yang dapat berdampak pada bisnis Anda. Rencanakan pemanggilan Anda secara tepat.
Parameter permintaan
Parameter | Tipe | Wajib | Contoh | Deskripsi |
body | JSONArray | Ya | ["taskId****","taskId****"] | Daftar nilai taskId untuk tugas deteksi yang ingin Anda kueri. Array dapat berisi hingga 100 elemen. Anda dapat memperoleh taskId dari respons setelah Anda mengirimkan tugas deteksi. |
Parameter respons
Parameter | Tipe | Contoh | Deskripsi |
code | Integer | 200 | Kode kesalahan. Sama dengan kode status HTTP. Untuk informasi lebih lanjut, lihat Kode kesalahan umum. |
msg | String | OK | Pesan respons. |
dataId | String | videoId**** | ID data objek deteksi. Catatan
Jika dataId dikirimkan dalam permintaan deteksi, dataId yang sama akan dikembalikan di sini. |
taskId | String | taskId**** | ID tugas moderasi. |
results | JSONArray | Array objek hasil, satu untuk setiap skenario moderasi yang diminta. Parameter ini hanya dikembalikan pada permintaan sukses di mana Catatan Dalam skenario moderasi aliran langsung, | |
audioScanResults | JSONArray | Hasil moderasi audio. Untuk detail struktur, lihat audioScanResult. |
Tabel 3. result
Parameter | Tipe | Contoh | Deskripsi |
scene | String | porn | Skenario moderasi yang ditentukan dalam permintaan. Nilai yang valid:
|
label | String | porn | Label hasil moderasi. Nilai yang valid bervariasi berdasarkan skenario moderasi:
|
sublabel | String | porn | Jika skenario deteksi mencakup pornografi (porn) dan terorisme/politik (terrorism), bidang ini dapat mengembalikan label detail halus untuk hasil deteksi. Bidang ini tidak dikembalikan secara default. |
suggestion | String | block | Aksi yang direkomendasikan. Nilai yang valid:
|
rate | Float | 99,2 | Skor kepercayaan. Nilai yang valid: 0 (kepercayaan terendah) hingga 100 (kepercayaan tertinggi). Jika suggestion adalah pass, semakin tinggi skor kepercayaan, semakin besar kemungkinan konten sesuai. Jika suggestion adalah review atau block, semakin tinggi skor kepercayaan, semakin besar kemungkinan konten tidak sesuai. Penting
Kami merekomendasikan agar Anda menggunakan bidang suggestion dan label (atau sublabel, untuk beberapa operasi API) untuk menentukan apakah konten melanggar. |
frames | JSONArray | Array frame video yang berisi konten tidak sesuai. Untuk detail struktur, lihat frame. | |
hintWordsInfo | JSONArray | Jika video berisi pelanggaran iklan atau teks, parameter ini mengembalikan informasi tentang kata kunci risiko yang ditemukan dalam teks. Untuk detail struktur, lihat hintWordsInfo. Catatan Parameter ini hanya tersedia untuk skenario deteksi pelanggaran iklan dan teks (ad). | |
logoData | JSONArray | Jika video berisi logo, parameter ini mengembalikan informasi tentang logo yang terdeteksi. Untuk detail struktur, lihat logoData. Catatan Parameter ini hanya tersedia untuk skenario deteksi logo (logo). | |
sfaceData | JSONArray | Jika video berisi konten teroris atau politik, parameter ini mengembalikan informasi tentang wajah yang terdeteksi. Untuk detail struktur, lihat sfaceData. Catatan Parameter ini hanya tersedia untuk skenario deteksi konten teroris (terrorism). |
Tabel 4. frame
Parameter | Type | Contoh | Deskripsi |
url | String | http://www.aliyundoc.com/0B860000586C0A0 | URL frame video. |
offset | Integer | 50 | Offset waktu frame video dari awal video, dalam satuan detik. |
label | String | porn | Label hasil moderasi untuk frame video. Nilai yang valid bervariasi berdasarkan skenario moderasi:
|
rate | Float | 99,1 | Skor kepercayaan. Nilai yang valid: 0 hingga 100. Skor kepercayaan yang lebih tinggi menunjukkan probabilitas yang lebih tinggi bahwa hasil deteksi akurat. Hindari menggunakan skor ini dalam logika bisnis Anda. |
Tabel 5. audioScanResult
Parameter | Tipe | Contoh | Deskripsi |
scene | String | antispam | Skenario moderasi audio. Satu-satunya nilai yang valid adalah antispam, yang menunjukkan anti-spam audio. |
label | String | customized | Kategori hasil moderasi audio. Nilai yang valid:
|
suggestion | String | block | Aksi yang direkomendasikan. Nilai yang valid:
|
rate | Float | 99,91 | Skor kepercayaan. Nilai yang valid: 0 (kepercayaan terendah) hingga 100 (kepercayaan tertinggi). Jika suggestion adalah pass, semakin tinggi skor kepercayaan, semakin besar kemungkinan konten sesuai. Jika suggestion adalah review atau block, semakin tinggi skor kepercayaan, semakin besar kemungkinan konten tidak sesuai. Penting
Kami merekomendasikan agar Anda menggunakan bidang suggestion dan label (atau sublabel, untuk beberapa operasi API) untuk menentukan apakah konten melanggar. |
details | JSONArray | Detail transkrip audio. Array ini berisi satu atau beberapa objek kalimat. Untuk detail struktur, lihat detail. |
Tabel 6. detail
Parameter | Type | Contoh | Deskripsi |
startTime | Integer | 24 | Waktu mulai kalimat, dalam satuan detik. |
endTime | Integer | 60 | Waktu akhir kalimat, dalam satuan detik. |
text | String | computer | Teks transkripsi audio. |
label | String | normal | Kategori hasil moderasi untuk kalimat tersebut. Nilai yang valid:
|
keyword | String | enable | Kata kunci kustom yang cocok, jika ada. |
libName | String | manual | Jika ditemukan kecocokan kata kunci kustom, parameter ini mengembalikan nama pustaka teks yang berisi kata kunci tersebut. |
Tabel 7. logoData
Parameter | Tipe | Contoh | Deskripsi |
type | String | TV | Jenis logo yang terdeteksi. Nilai |
name | String | ***TV | Nama logo yang terdeteksi. |
x | Float | 140 | Koordinat x sudut kiri atas kotak pembatas logo. Titik asal adalah pojok kiri atas gambar. Satuan: piksel. |
y | Float | 68 | Koordinat y sudut kiri atas kotak pembatas logo. Titik asal adalah pojok kiri atas gambar. Satuan: piksel. |
w | Float | 106 | Lebar kotak pembatas logo. Satuan: piksel. |
h | Float | 106 | Tinggi kotak pembatas logo. Satuan: piksel. |
Tabel 5. sfaceData
Parameter | Jenis | Contoh | Deskripsi |
x | Float | 444 | Koordinat x kotak pembatas wajah, relatif terhadap pojok kiri atas gambar. |
y | Float | 174 | Koordinat y kotak pembatas wajah, relatif terhadap pojok kiri atas gambar. |
w | Float | 467 | Lebar kotak pembatas wajah. |
h | Float | 467 | Tinggi kotak pembatas wajah. |
smileRate | Float | 0 | Probabilitas senyum. |
glasses | Boolean | false | Menunjukkan apakah orang tersebut memakai kacamata. |
faces | Array | Array objek wajah yang dikenali. Untuk struktur setiap objek, lihat Tabel 6. |
Tabel 8. face
Parameter | Tipe | Contoh | Deskripsi |
name | String | xxxx | Nama orang yang mirip. |
rate | Float | 97,03 | Probabilitas kemiripan. |
id | String | AliFace_001**** | ID wajah. |
Tabel 8. hitLibInfo
Parameter | Tipe | Contoh | Deskripsi |
context | String | xxxx | Konten yang cocok dari pustaka teks kustom. |
libCode | String | 69751 | Kode pustaka teks kustom. |
libName | String | manual | Nama pustaka teks kustom. |
Tabel 9. hintWordsInfo
Parameter | Tipe | Contoh | Deskripsi |
context | String | xxxx | Kata kunci risiko yang cocok. |
Contoh
Permintaan contoh
http(s)://[Endpoint]/green/video/results
&<common request parameters>
[
"taskId****",
"taskId****"
]Respons contoh
Hanya memoderasi gambar
{ "code": 200, "msg": "OK", "requestId": "requestID****", "data": [ { "code": 200, "msg": "OK", "dataId": "videoId****", "taskId": "taskId****", "results": [ { "label": "porn", "rate": 99,2, "scene": "porn", "suggestion": "block" } ] } ] }Memoderasi gambar dan audio
{ "code": 200, "msg": "OK", "requestId": "requestID****", "data": [ { "code": 200, "msg": "OK", "dataId": "videoId****", "taskId": "taskId****", "results": [ { "label": "porn", "rate": 99.2, "scene": "porn", "suggestion": "block" } ], "audioScanResults": [ { "scene": "antispam", "label": "customized", "suggestion": "block", "rate": 99.91, "details": [ { "startTime": 0, "endTime": 24, "text": "computer", "label": "customized" }, { "startTime": 24, "endTime": 60, "text": "computer", "label": "normal" } ] } ] } ] }