Dengan mengonfigurasi callback untuk status ingest aliran, Anda dapat menerima notifikasi tepat waktu terkait keberhasilan atau pemutusan ingest aliran.
Cara kerjanya
ApsaraVideo Live mengirimkan permintaan HTTP GET ke server Anda untuk memberi tahu secara real-time tentang keberhasilan atau pemutusan ingest aliran. Server kemudian merespons dengan kode status HTTP 200, yang menunjukkan bahwa callback berhasil diterima.
Catatan penggunaan
URL callback tidak memerlukan pengenal tetapi harus dapat diakses. Respons URL harus memenuhi persyaratan berikut:
Jika akses ke URL callback mengalami timeout, ApsaraVideo Live akan mencoba mengakses kembali URL tersebut hingga lima kali dengan interval 1 detik. Periode timeout adalah 5 detik.
Logika callback
Selama ingest aliran melalui Real-Time Messaging Protocol (RTMP), ApsaraVideo Live memeriksa apakah klien ingest aliran menutup koneksi dalam waktu 2 detik setelah menerima pesan OnPublish. Jika koneksi tidak ditutup, ApsaraVideo Live mengirimkan notifikasi callback tentang keberhasilan ingest aliran.
Misalkan Anda memiliki Domain Ingest A dan Domain Streaming B yang saling terkait, serta mengonfigurasikan penarikan aliran reguler dan penarikan aliran yang dipicu untuk Domain Streaming B. Untuk menerima notifikasi callback tentang status penarikan aliran, konfigurasikan stream ingest callbacks untuk Domain Ingest A. Setelah konfigurasi, logika callback yang sama berlaku untuk penarikan aliran di bawah Domain Streaming B. Secara default, penarikan aliran dianggap berhasil jika klien tidak menutup koneksi dalam waktu 2 detik.
CatatanKami sarankan Anda menerbitkan URL streaming setelah memastikan bahwa ingest atau penarikan aliran berhasil berdasarkan notifikasi callback dan respons terhadap panggilan operasi DescribeLiveStreamsOnlineList.
ApsaraVideo Live secara otomatis menghentikan ingest aliran ketika tidak ada data streaming yang dikirim ke pusat live selama 10 detik.
Logika callback ingest aliran
Secara default, autentikasi untuk callback ingest aliran dinonaktifkan. Anda dapat mengaktifkan fitur ini saat menentukan URL callback ingest aliran. Setelah diaktifkan, logika autentikasi berikut berlaku:
Ketika ApsaraVideo Live memulai permintaan callback, ia menyertakan header
ALI-LIVE-TIMESTAMPdanALI-LIVE-SIGNATUREdalam permintaan HTTP atau HTTPS sehingga server penerima pesan callback dapat mengautentikasi tanda tangan. Nilai dariALI-LIVE-SIGNATUREdihitung menggunakan rumus berikut:ALI-LIVE-SIGNATURE = MD5SUM (MD5CONTENT)MD5CONTENT = Nama domain|Nilai ALI-LIVE-TIMESTAMP|Kunci kriptografiCatatanNama domain adalah domain ingest tempat Anda mengonfigurasi URL callback. Kunci kriptografi adalah kunci kriptografi yang Anda tentukan untuk URL callback.
Setelah menerima pesan callback, server penerima menggabungkan nama domain callback, nilai header
ALI-LIVE-TIMESTAMP, dan kunci kriptografi dalam format sebelumnya. Server menghitung nilai MD5 dari string untuk mendapatkan string terenkripsi, lalu membandingkan string terenkripsi dengan nilai headerALI-LIVE-SIGNATUREdalam permintaan HTTP atau HTTPS yang dimulai oleh ApsaraVideo Live. Jika kedua nilai berbeda, permintaan dianggap tidak valid.
Contoh
Contoh callback:
http://1.1.1.1?action=publish&ip=192.168.XX.XX&id=world&app=example.aliyundoc.com&appname=liveApp****&time=1609220385&usrargs={Parameter kustom}&
node=cdnvideocenter01020711****.cm3&height=720&width=1280Parameter | Deskripsi |
action | Peristiwa. Nilai yang valid:
|
ip | Alamat IP klien ingest aliran. |
id | Nama aliran yang di-ingest. |
app | Domain ingest. Nilai default adalah domain ingest kustom. Jika tidak ada domain ingest yang tersedia, domain streaming digunakan. |
appname | Nama aplikasi yang meng-ingest aliran. |
time | Timestamp UNIX. Unit: detik. |
usrargs | Parameter kustom yang digunakan untuk meng-ingest aliran. |
node | Nama CDN point of presence (POP) atau host yang menerima aliran. |
height | Tinggi resolusi. Unit: piksel. Catatan Tinggi dan lebar resolusi hanya dikembalikan saat callback dipanggil untuk pertama kalinya. |
width | Lebar resolusi. Unit: piksel. |