All Products
Search
Document Center

ApsaraVideo Live:Notifikasi callback perekaman cloud

Last Updated:Dec 07, 2025

Topik ini menjelaskan format pesan dan parameter untuk notifikasi callback perekaman cloud.

Mekanisme pengulangan callback perekaman cloud

Sistem akan mengirim ulang pesan callback jika kode kesalahan respons adalah 500 atau lebih besar, atau jika permintaan mengalami timeout.

Format pesan callback perekaman cloud

  • Pesan callback dikirim sebagai permintaan POST melalui HTTP atau HTTPS ke URL yang telah Anda konfigurasi.

  • Badan permintaan berada dalam format JSON.

  • Setelah menerima pesan callback, Anda harus mengembalikan respons berikut:

    Header

    HttpStatus

    Body

    Content-Type: application/json

    200

    {

    "Code": 0,

    "Msg": "Success"

    }

Parameter callback perekaman cloud

Catatan

Saat ini, notifikasi callback perekaman cloud hanya mendukung event yang terkait dengan perubahan status task.

Header pesan callback

Parameter

Nilai

Content-Type

application/json

ALI-LIVE-TIMESTAMP

Parameter ini hanya dikirimkan jika NotifyAuthKey valid. Contoh: 1748417138

ALI-LIVE-SIGNATURE

Parameter ini hanya dikirimkan jika NotifyAuthKey valid. Contoh: abcdefgxxx

Petunjuk autentikasi: Jika Anda memberikan NotifyAuthKey yang valid saat membuat task perekaman cloud, sistem akan menyertakan field ALI-LIVE-TIMESTAMP dan ALI-LIVE-SIGNATURE dalam header permintaan HTTP notifikasi callback. Anda dapat menggunakan field-field tersebut untuk memverifikasi signature guna memastikan bahwa pesan callback sah dan aman.

ALI-LIVE-SIGNATURE dihasilkan sebagai berikut:

ALI-LIVE-SIGNATURE = MD5(MD5CONTENT)
MD5CONTENT = ALI-LIVE-TIMESTAMP + "|" + NotifyAuthKey
  1. Setelah menerima permintaan callback, ambil nilai ALI-LIVE-TIMESTAMP dan ALI-LIVE-SIGNATURE dari header permintaan.

  2. Buat string MD5CONTENT dengan menggabungkan NotifyAuthKey yang disimpan secara lokal dengan nilai ALI-LIVE-TIMESTAMP dari header permintaan, menggunakan karakter pipe (|) sebagai pemisah.

  3. Hitung hash MD5 dari string MD5CONTENT untuk mendapatkan signature.

  4. Bandingkan tanda tangan yang dihitung dengan ALI-LIVE-SIGNATURE dari header permintaan.

Jika signature tidak cocok, permintaan berasal dari sumber yang tidak tepercaya. Anda harus menolak permintaan tersebut untuk menjaga keamanan sistem.

Isi pesan Callback

Parameter

Tipe

Deskripsi

appId

string

ID aplikasi.

channelId

string

ID saluran.

taskId

string

ID tugas perekaman.

eventType

string

Tipe event. Untuk informasi selengkapnya, lihat tabel Event types.

callbackTs

integer

Waktu pengiriman callback. Ini merupakan stempel waktu UNIX dalam milidetik.

Contoh: 1744774345595.

payload

json string

Informasi lainnya. Untuk detail parameter, lihat tabel Other information.

Tipe event (eventType)

Nilai

Deskripsi

TaskCreated

Tugas telah dibuat.

TaskStarting

Tugas sedang dimulai.

TaskRunning

Tugas sedang berjalan.

TaskRecovering

Tugas sedang pulih dari pengecualian.

TaskStopping

Tugas sedang dihentikan.

TaskStopped

Tugas telah dihentikan.

TaskStartFailed

Tugas gagal dimulai.

TaskUpdated

Tugas berhasil diperbarui.

TaskUpdateFailed

Tugas gagal diperbarui.

RecordStart

Perekaman dimulai.

RecordFailed

Perekaman gagal pulih dari pengecualian dan mengalami timeout.

RecordFileUploaded

File rekaman telah diunggah.

Informasi lainnya (payload)

Parameter

Tipe

Deskripsi

eventTs

integer

Waktu terjadinya event. Ini merupakan stempel waktu UNIX dalam milidetik.

Contoh: 1744774345595.

taskStatus

string

Status task. Untuk informasi selengkapnya, lihat tabel Task statuses.

Catatan

Parameter ini tidak dikembalikan ketika eventType adalah RecordFileUploaded.

errorCode

string

Kode kesalahan. Untuk informasi selengkapnya, lihat tabel Errors.

errorMessage

string

Pesan kesalahan. Untuk informasi selengkapnya, lihat tabel Errors.

recordFileList

FileList

Daftar file rekaman. Untuk informasi selengkapnya tentang parameter, lihat tabel FileList.

Catatan

Parameter ini hanya dikembalikan ketika eventType adalah TaskRunning, TaskStopping, atau TaskStopped.

recordFile

RecordFile

Informasi file rekaman. Parameter ini hanya dikembalikan ketika eventType adalah RecordFileUploaded. Untuk informasi selengkapnya tentang parameter, lihat tabel RecordFile.

format

string

Format file rekaman. Parameter ini hanya dikembalikan ketika eventType adalah RecordFileUploaded. Nilai ini menunjukkan format file untuk callback ini. Nilai yang valid:

  • SLICE (tidak didukung)

  • HLS

  • MP4

  • MP3

streamInfo

string

Parameter ini hanya dikembalikan ketika eventType adalah RecordStart. Parameter ini menunjukkan aliran yang berlangganan mana yang mulai direkam.

  • Untuk perekaman pencampuran aliran, nilainya selalu Mix.

  • Untuk perekaman aliran tunggal, nilainya adalah Single::{UserId}::{Suffix}. UserId adalah ID pengguna yang sesuai dengan aliran tersebut. Suffix bergantung pada StreamType dan SourceType yang ditentukan saat berlangganan:

    • Jika StreamType adalah 0: Suffix adalah AV::C jika SourceType adalah 0, atau AV::S jika SourceType adalah 1.

    • Jika StreamType adalah 1: Suffix selalu A.

    • Jika StreamType adalah 2 (tidak didukung untuk perekaman aliran tunggal): Suffix adalah V::C jika SourceType adalah 0, atau V::S jika SourceType adalah 1.

Daftar file rekaman (FileList)

Parameter

Tipe

Deskripsi

mp3FileList

array<string>

Array nama file rekaman MP3.

mp4FileList

array<string>

Array nama file rekaman MP4.

hlsFileList

array<string>

Array nama file rekaman HLS.

vodMediaList

array<VodFileInfo>

Array resource media VOD. Parameter ini tidak kosong hanya ketika merekam ke VOD. Saat merekam ke VOD, ini merupakan kumpulan file rekaman untuk setiap aliran yang berlangganan. Setiap item sesuai dengan satu aliran yang berlangganan. Untuk informasi selengkapnya tentang parameter VodFileInfo, lihat tabel VodFileInfo.

Informasi file VOD (VodFileInfo)

Parameter

Tipe

Deskripsi

stream

string

Aliran yang berlangganan.

  • Untuk perekaman pencampuran aliran, nilainya selalu Mix.

  • Untuk perekaman aliran tunggal, nilainya adalah Single::{UserId}::{Suffix}.

    • UserId adalah ID pengguna yang sesuai dengan aliran tersebut.

    • Suffix bergantung pada StreamType dan SourceType yang ditentukan saat berlangganan.

      • Jika StreamType adalah 0: Suffix adalah AV::C jika SourceType adalah 0, atau AV::S jika SourceType adalah 1.

      • Jika StreamType adalah 1: Suffix selalu A.

      • Jika StreamType adalah 2 (tidak didukung untuk perekaman aliran tunggal): Suffix adalah V::C jika SourceType adalah 0, atau V::S jika SourceType adalah 1.

mediaIds

array<string>

Array ID resource media yang dihasilkan selama perekaman.

mergedIds

array<string>

Array ID resource media yang secara otomatis digabung setelah perekaman selesai. Parameter ini tidak kosong hanya jika Anda merekam ke VOD, mengaktifkan penggabungan otomatis, dan merekam lebih dari satu resource media.

Informasi file rekaman (RecordFile)

Parameter

Tipe

Deskripsi

sliceFile

string

Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat.

hlsFile

string

Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat.

mp4File

string

Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat.

mp3File

string

Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat.

Status task (taskStatus)

Catatan

Status task tidak dipengaruhi oleh pembaruan yang berhasil atau gagal. Oleh karena itu, field `taskStatus` tidak mencakup status tersebut.

Status

Deskripsi

CREATED

Dikembalikan ketika tugas dibuat.

STARTING

Dikembalikan ketika tugas sedang dimulai.

RUNNING

Dikembalikan ketika tugas sedang berjalan.

RECOVERING

Dikembalikan ketika tugas sedang pulih dari pengecualian.

STOPPING

Dikembalikan ketika tugas sedang dihentikan.

STOPPED

Dikembalikan setelah tugas dihentikan.

FAILED

Dikembalikan setelah tugas gagal dimulai.

Kesalahan

Catatan

Parameter ini hanya berisi nilai ketika `eventType` bernilai `TaskRecovering`, `TaskStartFailed`, atau `TaskUpdateFailed`. Untuk tipe event lainnya, parameter ini kosong.

Tipe event (eventType)

Kode kesalahan (errorCode)

Pesan kesalahan (errorMessage)

Deskripsi

Task start failed (TaskStartFailed)

StartTaskError

Saluran sudah ditutup

Saluran ditutup.

Error memulai tugas

Alasan lainnya.

Recovery from an abnormal state (TaskRecovering)

RunTaskError

Tugas rms gagal

Modul pencampuran aliran berjalan tidak normal.

Tugas rekaman gagal

Modul rekaman berjalan tidak normal.

The task update failed. (TaskUpdateFailed)

UpdateTaskError

Error pembaruan tugas

Tugas gagal diperbarui.

RecordFailed

RunTaskError

Timeout status pemulihan

Pemulihan dari pengecualian mengalami timeout.

Contoh callback

Event TaskStopped:

{
    "appId": "mytestappid",
    "callbackTs": 1755504873034,
    "channelId": "room1047",
    "eventType": "TaskStopped",
    "payload": "{\"eventTs\":1755504873014,\"taskStatus\":\"STOPPED\",\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"\",\"recordFileList\":{\"mp3FileList\":[],\"mp4FileList\":[\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.mp4\",\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.mp4\"],\"hlsFileList\":[\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.m3u8\",\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.m3u8\"],\"vodMediaList\":[]}}",
    "taskId": "fe60a6e3-cecb-3fae-a8cf-3d2391f507a5"
}

Event RecordFileUploaded:

{
    "appId":"mytestappid",
    "callbackTs":1764301584289,
    "channelId":"room1406",
    "eventType":"RecordFileUploaded",
    "payload":"{\"eventTs\":1764301584265,\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"Single::userA::AV::C\",\"format\":\"MP4\",\"recordFile\":{\"sliceFile\":\"\",\"hlsFile\":\"\",\"mp3File\":\"\",\"mp4File\":\"mp4/07c2e845-630d-36a1-b2d1-3b546efdea90/mytestappid_room1406_userA_2025-11-28-11:46:03.mp4\"}}",
    "taskId":"07c2e845-630d-36a1-b2d1-3b546efdea90"}