ApsaraVideo Live menyediakan notifikasi event untuk pengambilan aliran siaran langsung, perekaman (termasuk perekaman on-demand), snapshot, moderasi konten, dan pemulihan bencana aliran ganda. Topik ini menjelaskan cara mengonfigurasi callback tersebut, mencantumkan parameter callback, serta memberikan contoh.
Ikhtisar
ApsaraVideo Live mengirimkan notifikasi event melalui callback HTTP. HTTPS juga didukung. Untuk menerima notifikasi ini, Anda perlu men-deploy layanan HTTP dan mengonfigurasi URL callback di Konsol ApsaraVideo Live atau menggunakan API.
HTTP GET: Ketika terjadi event pengambilan aliran atau gangguan, ApsaraVideo Live mengirimkan permintaan HTTP GET ke URL callback Anda, dengan detail event dikirimkan sebagai parameter URL.
HTTP POST: Ketika terjadi jenis event lainnya, ApsaraVideo Live mengirimkan permintaan HTTP POST ke URL callback Anda, dengan detail event dikirimkan dalam badan JSON.
Beberapa sertifikat SSL tidak kompatibel. Jika Anda mengalami masalah sertifikat, coba gunakan callback HTTP.
Catatan penggunaan
Konektivitas: URL callback Anda harus dapat diakses secara publik.
Timeout & Retries: Layanan mengharapkan respons dalam waktu 5 detik. Jika permintaan timeout, akan dilakukan retry hingga 5 kali dengan interval 1 detik.
Ruang lingkup domain:
Callback untuk pengambilan aliran dan pemulihan aliran ganda hanya dapat dikonfigurasi untuk domain ingest.
Callback untuk perekaman, snapshot, dan moderasi konten hanya dapat dikonfigurasi untuk domain streaming.
Manajemen callback
Callback pengambilan aliran
Callback ini memberi tahu Anda tentang status ingest domain, termasuk ingest berhasil, gangguan aliran, dan pengecualian ingest. Konfigurasikan URL callback di konsol atau menggunakan API.
Konfigurasi konsol
Masuk ke Konsol ApsaraVideo Live.
Di panel navigasi sebelah kiri, pilih Feature Management > Callbacks.
Pilih Ingest Domain yang ingin Anda konfigurasi.
Di tab Callback Settings, aktifkan sakelar Stream Ingest Callbacks, lalu konfigurasikan parameter berikut:
Callback Type: Atur callback untuk event ingest dan gangguan atau event pengecualian.
Callback URL: Titik akhir publik Anda untuk menerima notifikasi. Event ingest dan gangguan menggunakan HTTP GET, sedangkan event pengecualian menggunakan HTTP POST.
Callback Authentication: Pilih apakah akan mengaktifkan autentikasi. Jika diaktifkan, masukkan kunci autentikasi. Untuk proses autentikasi, lihat Callback authentication.
Klik OK.
Konfigurasi API
API | Description |
Menambahkan konfigurasi callback ingest. | |
Menanyakan konfigurasi callback ingest. | |
Menghapus konfigurasi callback ingest. |
Event ingest dan gangguan
Logika callback
Untuk dorong aliran, ApsaraVideo Live mengirimkan callback untuk ingest berhasil jika sumber siaran langsung tetap terhubung setidaknya selama dua detik setelah ApsaraVideo Live menerima pesan OnPublish.
Jika Anda menggunakan penarikan aliran (waktu tetap atau on-demand) untuk domain streaming (Domain B) dan memerlukan notifikasi callback, konfigurasikan callback pengambilan aliran untuk domain ingest terkait (Domain A). Logikanya tetap konsisten: begitu koneksi terbentuk, penarikan aliran dianggap berhasil jika sumber siaran langsung tetap terhubung setidaknya selama dua detik.
Jangan hanya mengandalkan notifikasi callback untuk menentukan apakah aliran telah berhasil diingest. Kami menyarankan Anda memanggil API untuk menanyakan daftar aliran online. Pastikan aliran aktif sebelum mendistribusikan URL pemutaran kepada pengguna.
Jika tidak ada data yang diterima oleh pusat siaran langsung ApsaraVideo Live selama 10 detik, layanan akan secara otomatis menghentikan koneksi ingest.
Parameter
Parameter | Description |
action | Jenis event yang memicu callback.
|
ip | Alamat IP klien ingest. |
id | Nama aliran. |
app | Domain ingest. Jika tidak ada domain ingest yang terkait, parameter ini mengembalikan domain streaming. |
appname | AppName dari aliran. |
time | Stempel waktu UNIX, dalam satuan detik, saat callback dikirim. |
usrargs | Parameter ingest yang ditentukan pengguna. |
node | Titik kehadiran (POP) atau server yang menerima aliran. |
height | Tinggi video dalam piksel, hanya disediakan pada callback pertama. |
width | Lebar video dalam piksel, hanya disediakan pada callback pertama. |
Contoh event ingest
http://1.1.X.X?action=publish&ip=192.168.0.1&id=world&app=example.aliyundoc.com&appname=liveApp****&time=1609220385&usrargs={user-defined-parameters}&node=cdnvideocenter01020711****.cm3&height=720&width=1280Contoh event gangguan
http://1.1.X.X?action=publish_done&ip=192.168.0.0&id=world&app=example.aliyundoc.com&appname=liveApp****&time=1609220385&usrargs={user-defined-parameters}&node=cdnvideocenter01020711****.cm3&height=720&width=1280Event pengecualian ingest
Parameter
Parameter | Description |
action | publish_exception_notify |
domain | Domain ingest. |
appname | AppName dari aliran. |
stream | Nama aliran. |
ip | Alamat IP klien ingest. |
time | Stempel waktu UNIX, dalam satuan detik, saat callback dikirim. |
type | Jenis event pengecualian. |
event_time | Stempel waktu UNIX, dalam satuan detik, saat pengecualian terjadi. |
Jenis pengecualian
Code | Event type |
1001 | URL berisi karakter yang tidak valid. |
2001 | Kodek video berada dalam daftar blokir. |
2002 | Kodek video tidak berada dalam daftar izin. |
2003 | Kodek audio berada dalam daftar blokir. |
2004 | Kodek audio tidak berada dalam daftar izin. |
3001 | Gagal mengurai header audio. |
3002 | Gagal mengurai header video. |
3003 | Gagal mengurai metadata. |
4001 | Lebar dan tinggi video tidak konsisten. |
4002 | Metadata menunjukkan tidak ada data audio, tetapi aliran berisi data audio. |
4003 | Data audio dan video aktual tidak sesuai dengan header. |
4004 | Metadata menunjukkan tidak ada data video, tetapi aliran berisi data video. |
4005 | Kodek audio berubah di tengah aliran. |
4006 | Kodek video berubah di tengah aliran. |
4007 | Frame audio diterima sebelum header audio. |
4008 | Frame video diterima sebelum header video. |
5001 | Jitter CTS berlebihan. |
5002 | Stempel Waktu Dekoding (DTS) tidak monotonik. |
5003 | Selisih stempel waktu antara audio dan video terlalu besar. |
5004 | Inkremen DTS audio terlalu besar. |
5005 | Inkremen DTS video terlalu besar. |
5006 | Interval antara frame audio yang diterima terlalu lama. |
5007 | Interval antara frame video yang diterima terlalu lama. |
5008 | Interval keyframe terlalu lama. |
Contoh event pengecualian
{
"action": "publish_exception_notify",
"domain": "demo.aliyundoc.com",
"appname": "liveApp****",
"stream": "liveStream****",
"ip": "141.01.****",
"time": "1739760710",
"type": "5002",
"event_time": "1739760710"
}Callback perekaman siaran langsung
Callback perekaman siaran langsung memberi tahu Anda tentang status perekaman, pembuatan file, dan kesalahan perekaman.
Konfigurasi konsol
Masuk ke Konsol ApsaraVideo Live.
Di panel navigasi sebelah kiri, pilih Feature Management > Callbacks.
Pilih Streaming Domain yang ingin Anda konfigurasi.
Di tab Callback Settings, aktifkan sakelar Recording Callbacks dan konfigurasikan parameter berikut:
Callback URL: Titik akhir publik Anda untuk menerima notifikasi. Callback perekaman menggunakan permintaan HTTP POST.
Triggering Event: Pilih File Generation atau File Generation and Recording Status.
On-demand Callback URL: Jika Anda telah mengonfigurasi perekaman on-demand, layanan akan mengirimkan callback HTTP ke URL ini ketika siaran langsung dimulai. Server Anda harus merespons permintaan ini untuk menentukan apakah aliran harus direkam. Secara default, parameter ini diatur ke
*, yang menonaktifkan fitur perekaman on-demand.Callback Authentication: Pilih apakah akan mengaktifkan autentikasi. Jika diaktifkan, masukkan kunci autentikasi. Untuk proses autentikasi, lihat Callback authentication.
Klik OK.
Konfigurasi API
API | Description |
Menambahkan konfigurasi callback perekaman untuk domain. | |
Menanyakan konfigurasi callback perekaman. | |
Menghapus konfigurasi callback perekaman untuk domain. |
Callback status perekaman
Dikirim ketika sesi perekaman dimulai atau dijeda.
Parameter
Parameter | Description |
domain | Domain streaming untuk perekaman. |
app | AppName dari aliran. |
stream | Nama aliran. |
event | Event.
|
Contoh
{
"domain": "demo.aliyundoc.com",
"app": "liveApp****",
"stream": "liveStream****",
"event": "record_started"
}Callback pembuatan file
Dikirim saat file dibuat, memberikan detail seperti path file, durasi, dan stempel waktu.
Parameter
Parameter | Description |
domain | Domain streaming untuk perekaman. |
app | AppName dari aliran. |
stream | Nama aliran. |
uri | Path relatif file rekaman di bucket OSS atau bucket ApsaraVideo VOD Anda. |
record_id | ID file indeks. |
file_url | URL lengkap file rekaman. |
duration | Durasi file rekaman, dalam satuan detik. |
start_time | Waktu mulai perekaman, sebagai stempel waktu UNIX dalam satuan detik. |
stop_time | Waktu akhir perekaman, sebagai stempel waktu UNIX dalam satuan detik. |
is_finished | Menunjukkan apakah perekaman telah selesai. Parameter ini hanya dikembalikan ketika siaran langsung direkam ke ApsaraVideo VOD. |
oss_endpoint | Endpoint penyimpanan. |
oss_bucket | Nama bucket penyimpanan. |
push_args | Parameter yang ditentukan pengguna dari URL ingest yang diawali dengan Catatan
|
Contoh
Jika URL ingest adalah rtmp://demo.aliyundoc.com/liveApp****/liveStream****?callback_args1=value1&callback_myid=1231389741, muatan callback adalah sebagai berikut:
{
"domain": "demo.aliyundoc.com",
"app": "liveApp****",
"stream": "liveStream****",
"uri": "liveApp****/liveStream****/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv",
"file_url": "http://****.oss-****.aliyuncs.com/liveApp****/liveStream****/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv",
"duration": 69.403,
"start_time": 1488985786,
"stop_time": 1488985840,
"push_args": {
"callback_args1": "value1",
"callback_myid": "1231389741"
}
}Callback kesalahan perekaman
Dipicu oleh pengecualian aliran sumber atau kegagalan penulisan penyimpanan (OSS).
Parameter
Parameter | Description |
domain | Domain streaming untuk perekaman. |
app | AppName dari aliran. |
stream | Nama aliran. |
event | Jenis event.
|
error_info | Informasi kesalahan dalam format JSON. Berisi bidang-bidang berikut:
|
file_info | Informasi file. Parameter ini hanya dikembalikan untuk
|
Contoh kesalahan perekaman
{
"domain": "example.com",
"app": "live",
"stream": "stream123",
"event": "record_error",
"error_info": {
"code": "TsSegmenterFail",
"message": "ts segmenter error"
}
}Kode kesalahan
Code | Message | Description |
BucketNotFound | Bucket not found | Bucket tidak ada atau telah dihapus. |
AccessDenied | Bucket not belong config userId | Bucket tidak dimiliki oleh akun tempat konfigurasi perekaman ditambahkan. |
StreamFormatError | video stream format error | Format siaran langsung tidak valid. |
UserDisable | Unauthorized access to OSS by user | Pengguna tidak diizinkan mengakses OSS, atau otorisasi telah dicabut. |
Contoh kesalahan remuxing
{
"domain": "example.com",
"app": "live",
"stream": "stream123",
"event": "transformat_error",
"error_info": {
"code": "PermissionDenied.ResourceAccess",
"message": "MTS not authorized to operate on the OutputBucket"
},
"file_info": {
"uri": "record/live/stream123/2025-11-19-03-17-03_2025-11-19-03-28-39.flv",
"start_time": 1763493420,
"stop_time": 1763494119
}
}Kode kesalahan
Code | Message | Description |
InvalidParameter.ResourceNotFound | The resource operated cannot be found | Bucket tidak ada atau telah dihapus. |
InvalidParameter.ResourceContentBad | The resource operated InputFile is bad | Remuxing gagal karena masalah kualitas aliran sumber. |
PermissionDenied.ResourceAccess | MTS not authorized to operate on the OutputBucket | Pengguna tidak diizinkan mengakses OSS, atau otorisasi telah dicabut. |
Callback perekaman on-demand
Perekaman on-demand memungkinkan Anda memutuskan secara programatis apakah akan merekam siaran langsung berdasarkan metadata aliran.
Ketika siaran langsung cocok dengan templat perekaman on-demand yang telah Anda konfigurasi sebelumnya (di tingkat domain, app, atau aliran), layanan perekaman mengirimkan permintaan HTTP ke On-demand callback URL Anda dengan detail aliran. Server Anda kemudian harus merespons untuk menunjukkan apakah aliran akan direkam dan memberikan pengaturan perekaman spesifik.
Parameter permintaan
Parameter | Type | Description |
domain | String | Domain streaming. |
app | String | AppName dari aliran. |
stream | String | Nama aliran. |
codec | String | Kodek. Nilai yang valid:
|
vbitrate | String | Bitrate video. Satuan: kbps. |
Contoh permintaan
GET /?app=seq_all&domain=demo.aliyundoc.com&stream=ondemand8&vbitrate=2000&codec=h264 HTTP/1.1
Host: pull.aliyundoc.com
User-Agent: Go-http-client/1.1
Accept-Encoding: gzipParameter respons
Parameter | Type | Required | Description |
ApiVersion | String | No | Versi API. Nilai default adalah 1.0. |
NeedRecord | Boolean | Yes | Menunjukkan apakah aliran akan direkam. |
Interval | JSONObject | No | Siklus perekaman untuk format tertentu. Rentang: 5 hingga 21600. Satuan: detik. |
Format | JSONArray | No | Format perekaman. Format yang didukung: MP4, FLV, dan M3U8. |
Contoh respons
{
"ApiVersion": "1.0",
"NeedRecord": true,
"Interval": {
"Mp4": 300,
"Flv": 120,
"M3U8": 180
},
"Format": ["mp4","flv"]
}Penanganan respons
Layanan perekaman memproses respons Anda untuk mengganti konfigurasi yang ada:
Interval: Nilai Interval yang Anda berikan akan mengganti siklus perekaman yang dikonfigurasi dalam templat perekaman.Format: Layanan menghitung irisan antara Format yang Anda minta dan format yang telah dikonfigurasi dalam templat perekaman. Jika tidak ada format yang sama, aliran tidak akan direkam.
Kode status HTTP selain 200 menunjukkan panggilan ke endpoint API Anda gagal.
Badan respons tidak boleh melebihi 2.048 byte. Sistem akan memotong konten apa pun yang melebihi batas ini demi keamanan.
Callback snapshot siaran langsung
ApsaraVideo Live mendukung notifikasi event untuk snapshot siaran langsung. Anda dapat mengonfigurasi URL callback di konsol atau melalui API.
Konfigurasi konsol
Masuk ke Konsol ApsaraVideo Live.
Di panel navigasi sebelah kiri, pilih Feature Management > Callbacks.
Pilih Streaming Domain yang ingin Anda konfigurasi.
Di tab Callback Settings, aktifkan sakelar Snapshot Callbacks dan konfigurasikan parameter berikut:
Callback URL: Titik akhir publik Anda untuk menerima notifikasi. Callback snapshot menggunakan permintaan HTTP POST.
Callback Authentication: Pilih apakah akan mengaktifkan autentikasi. Jika diaktifkan, masukkan kunci autentikasi. Untuk proses autentikasi, lihat Callback authentication.
Klik OK.
Konfigurasi API
API | Description |
Menambahkan konfigurasi callback snapshot siaran langsung. | |
Memodifikasi konfigurasi callback snapshot siaran langsung. | |
Menanyakan konfigurasi callback snapshot siaran langsung. | |
Menghapus konfigurasi callback snapshot siaran langsung. |
Parameter callback snapshot
Parameter | Description |
Event | Jenis event. Nilainya adalah |
DomainName | Domain streaming. |
AppName | AppName dari aliran. |
StreamName | Nama aliran. |
OssBucket | Nama bucket OSS yang menyimpan snapshot. |
OssEndpoint | Endpoint OSS tempat snapshot disimpan. |
OssObject | Nama file snapshot di bucket OSS. |
CreateTime | Stempel waktu saat snapshot dibuat. |
SnapshotUrl | URL lengkap file snapshot di bucket OSS. |
Size | Ukuran gambar dalam byte. |
Width | Lebar gambar dalam piksel. |
Height | Tinggi gambar dalam piksel. |
Contoh
{
"Event": "Snapshot",
"DomainName": "demo.aliyundoc.com",
"AppName": "liveApp****",
"StreamName": "liveStream****",
"OssBucket": "liveBucket****",
"OssEndpoint": "oss-cn-shan****.aliyuncs.com",
"OssObject": "1****.jpg",
"CreateTime": "2015-12-01T17:36:00Z",
"SnapshotUrl": "http://liveBucket****.oss-cn-shan****.aliyuncs.com/1****.jpg",
"Size": "36291",
"Width": "1280",
"Height": "720"
}Callback moderasi konten
ApsaraVideo Live mendukung notifikasi event untuk hasil moderasi video dan audio. Anda dapat mengonfigurasi URL callback di konsol atau melalui API.
Callback moderasi video
Dipicu hanya untuk konten video yang ditandai sebagai bermasalah.
Konfigurasi konsol
Masuk ke Konsol ApsaraVideo Live.
Di panel navigasi sebelah kiri, pilih Feature Management > Callbacks.
Pilih Streaming Domain yang ingin Anda konfigurasi.
Di tab Callback Settings, aktifkan sakelar Video Moderation Callbacks dan konfigurasikan URL callback. URL harus mengarah ke endpoint Anda sendiri. Ketika event moderasi video dipicu, ApsaraVideo Live akan mengirimkan permintaan HTTP POST ke URL yang Anda tentukan, dengan detail event dikirimkan dalam badan JSON.
Klik OK.
Konfigurasi API
API | Description |
Menambahkan konfigurasi callback moderasi video. | |
Menanyakan konfigurasi callback moderasi video. | |
Memodifikasi konfigurasi callback moderasi video. | |
Menghapus konfigurasi callback moderasi video. |
Parameter callback
Notifikasi menyediakan detail moderasi dan lokasi penyimpanan snapshot yang diambil dari konten yang ditandai.
Parameter | Type | Description |
DomainName | String | Domain streaming. |
AppName | String | AppName dari aliran. |
StreamName | String | Nama aliran. |
OssEndpoint | String | Endpoint OSS. |
OssBucket | String | Bucket OSS. |
OssObject | String | Nama objek. |
Result | JSONArray | Hasil moderasi. Untuk informasi lebih lanjut, lihat Result. |
Result
Parameter | Type | Description |
BizType | String | Jenis bisnis. Parameter ini dapat digunakan untuk memilih model. Secara default, nilainya adalah nama domain. |
Scene | String | Skenario Deteksi.
|
Label | String | Kategori hasil. Kategori bervariasi berdasarkan skema deteksi. Kategori untuk
Kategori untuk
Kategori untuk
Kategori untuk
Kategori untuk
|
Rate | Float | Skor kepercayaan. Rentang: 0 hingga 100. Catatan Nilai ini hanya untuk referensi. Jangan gunakan nilai ini dalam logika bisnis Anda. Gunakan hasil |
Extent | String | Parameter cadangan. |
Versi ini berlaku secara default untuk pengguna baru. Pengguna yang sudah ada tetap menggunakan versi saat ini. Untuk menggunakan versi ini, ajukan tiket.
Contoh
{
"DomainName": "demo.aliyundoc.com",
"AppName": "liveApp****",
"StreamName": "liveStream****",
"OssEndpoint": "oss-cn-hang****.aliyuncs.com",
"OssBucket": "liveBucket****",
"OssObject": "example.jpg",
"Result": [
{
"BizType": "demo.aliyundoc.com",
"Result": [
{"Label": "Porn", "Rate": 11, "Suggestion": "review", "Scene": "porn", "Extent": {}},
{"Label": "Ad", "Rate": 11, "Suggestion": "review", "Scene": "ad", "Extent": {}}
]
}
]
}Callback moderasi audio
Dipicu hanya untuk konten audio yang ditandai sebagai bermasalah.
Konfigurasi konsol
Masuk ke Konsol ApsaraVideo Live.
Di panel navigasi sebelah kiri, pilih Feature Management > Callbacks.
Pilih Streaming Domain yang ingin Anda konfigurasi.
Di tab Callback Settings, aktifkan sakelar Audio Moderation Callbacks dan konfigurasikan URL callback. URL harus mengarah ke endpoint Anda sendiri. Ketika event moderasi audio dipicu, ApsaraVideo Live akan mengirimkan permintaan HTTP POST ke URL yang Anda tentukan, dengan detail event dikirimkan dalam badan JSON.
Klik OK.
Konfigurasi API
API | Description |
Menambahkan konfigurasi callback moderasi audio. | |
Menghapus konfigurasi callback moderasi audio. | |
Memodifikasi konfigurasi callback moderasi audio. | |
Menanyakan konfigurasi callback moderasi audio. |
Parameter callback
Notifikasi mencakup teks transkripsi audio bermasalah dan informasi kontekstual dari menit berikutnya.
Parameter | Type | Description |
DomainName | String | Domain streaming. |
AppName | String | AppName dari aliran. |
StreamName | String | Nama aliran. |
Timestamp | Int | Stempel waktu, dalam satuan detik. |
Result | JSONArray | Hasil moderasi. Untuk informasi lebih lanjut, lihat Result. |
Result
Parameter | Type | Description |
Scene | String | Skenario Deteksi. |
Label | String | Kategori hasil deteksi. Nilai yang valid:
|
Suggestion | String | Tindakan yang disarankan. Nilai yang valid:
|
Rate | Float | Skor kepercayaan. Rentang: 0 hingga 100. Catatan Nilai ini hanya untuk referensi. Jangan gunakan nilai ini dalam logika bisnis Anda. Gunakan hasil |
Details | JSONArray | Detail audio yang ditranskripsi. Array berisi satu atau lebih elemen, dan setiap elemen sesuai dengan satu kalimat. Untuk struktur, lihat Detail. |
Detail
Parameter | Type | Description |
StartTime | Int | Stempel waktu awal kalimat, dalam satuan detik. |
EndTime | Int | Stempel waktu akhir kalimat, dalam satuan detik. |
Text | String | Teks yang ditranskripsi. |
Label | String | Kategori hasil deteksi. Nilai yang valid:
|
Contoh
{
"DomainName": "example.aliyundoc.com",
"AppName": "liveApp****",
"StreamName": "5d9747eba39b44769852d276f9ff****",
"Timestamp": 1572248095,
"Result": [
{
"Scene": "antispam",
"Label": "ad",
"Suggestion": "block",
"Rate": 99.91,
"Details": [
{
"StartTime": 1572248023,
"EndTime": 1572248040,
"Text": "The hotel offers 120 days of free accommodation. It can be shared with friends and family. Visit the reception center at No. 96 Tuanjie Street, Mangshi. Hotline: 2285699.",
"Label": "ad"
},
{
"StartTime": 1572248040,
"EndTime": 1572248070,
"Text": "Discover a rare collection of classic villas nestled in the heart of the Hot Spring Resort Town. Located adjacent to the prestigious Longduo Hot Springs and the historic Lianghe Golden Pagoda, this is where luxury meets nature.",
"Label": "normal"
},
{
"StartTime": 1572248072,
"EndTime": 1572248077,
"Text": "Joyful times and cozy days, made all the more carefree with your beautiful company.",
"Label": "normal"
},
{
"StartTime": 1572248078,
"EndTime": 1572248086,
"Text": "fme043 A little break from the hustle with cozy music and movies.",
"Label": "normal"
}
]
}
]
}Callback pemulihan bencana aliran ganda
Callback ini memberi tahu Anda ketika terjadi pergantian aliran untuk failover.
Konfigurasi konsol
Masuk ke Konsol ApsaraVideo Live.
Di panel navigasi sebelah kiri, pilih Feature Management > Callbacks.
Pilih Ingest Domain untuk dikonfigurasi.
Di tab Callback Settings, aktifkan sakelar Dual-stream Disaster Recovery Callbacks dan konfigurasikan URL callback.
Klik OK.
Parameter callback
Parameter | Description |
action | Jenis event. Nilai tetap: |
domain | Domain ingest. |
appname | AppName dari aliran. |
streamname | Nama aliran. |
upstreamsequence | Identifikasi aliran utama setelah pergantian. |
upstreamip | Alamat IP klien yang menerbitkan aliran utama setelah pergantian. |
upstreamtime | Waktu mulai ingest aliran utama setelah pergantian. Ini adalah stempel waktu UNIX dalam satuan detik. |
changereason | Alasan alih bencana. |
changetime | Waktu terjadinya pergantian aliran. Ini adalah stempel waktu UNIX dalam satuan detik. |
time | Waktu saat notifikasi callback dihasilkan. Ini adalah stempel waktu UNIX dalam satuan detik. |
Contoh
{
"action": "multistream_set_master_result",
"domain": "demo.aliyundoc.com",
"appname": "liveApp****",
"streamname": "liveStream****",
"upstreamsequence": "main",
"upstreamip": "203.**.***.10",
"upstreamtime": 17*****710,
"changereason": "merge_cut_manually",
"changetime": 17*****705,
"time": 17*****706
}Otentikasi callback
ApsaraVideo Live mendukung otentikasi callback untuk event ingest aliran, perekaman, snapshot, dan pemulihan bencana aliran ganda. Saat diaktifkan, otentikasi bekerja sebagai berikut:
ApsaraVideo Live menyertakan header ALI-LIVE-TIMESTAMP dan ALI-LIVE-SIGNATURE dalam permintaan callback-nya, sehingga server penerima Anda dapat memverifikasi bahwa permintaan callback tersebut autentik dan tidak dimanipulasi.
Perhitungan ALI-LIVE-SIGNATURE
ALI-LIVE-SIGNATURE=MD5SUM(MD5CONTENT)
MD5CONTENT=Domain|ALI-LIVE-TIMESTAMP Value|Auth KEYdi mana:
Domain: Sumber domain bervariasi berdasarkan jenis callback:Untuk callback ingest aliran dan pemulihan bencana aliran ganda: Gunakan domain ingest tempat URL callback dikonfigurasi.
Untuk callback perekaman dan snapshot: Gunakan domain dari URL callback. Misalnya, jika URL callback adalah
https://learn.aliyundoc.com/your/callback, nilai domain adalahlearn.aliyundoc.com.
ALI-LIVE-TIMESTAMP: Stempel waktu UNIX saat permintaan dikirim. Satuan: detik.Auth KEY: Kunci otentikasi yang dikonfigurasi untuk URL callback yang sesuai.
Otentikasi server penerima
Saat menerima pesan callback, server penerima pesan callback menentukan domain callback berdasarkan jenis callback. Server kemudian menggabungkan domain callback, nilai ALI-LIVE-TIMESTAMP, dan kunci otentikasi, menghitung hash MD5 dari string ini, lalu membandingkan nilai hash yang dihitung dengan nilai header ALI-LIVE-SIGNATURE dalam permintaan. Jika nilai-nilai tersebut tidak cocok, permintaan tidak sah.
Rekaman callback
Konsol ApsaraVideo Live mendukung peninjauan riwayat dan muatan event callback ingest dan perekaman siaran langsung. Jenis callback lainnya tidak didukung.
Batasan
Konfigurasi callback baru atau yang diperbarui memerlukan waktu hingga 5 menit untuk berlaku. Setelah berlaku, rekaman callback akan muncul seperti yang diharapkan.
Hingga 1.000 rekaman callback dari 7 hari terakhir tersedia.
Langkah-langkah
Masuk ke Konsol ApsaraVideo Live.
Di panel navigasi sebelah kiri, klik Feature Management > Callbacks.
Pilih domain ingest atau domain streaming tempat URL callback dikonfigurasi.
Di tab Callback Records, pilih Stream Ingest Callbacks atau Recording Callbacks.
Anda dapat memfilter rekaman callback berdasarkan rentang waktu, AppName, dan StreamName.