ApsaraVideo Live mengelola konfigurasi perekaman menggunakan templat perekaman. Sistem mencocokkan URL ingest dengan templat perekaman yang sesuai berdasarkan domain ingest, nama aplikasi, dan nama aliran dalam URL tersebut. Templat perekaman mendukung dua metode perekaman sesuai permintaan: Control by ingest parameters dan Control by HTTP callback. Anda dapat menggunakan metode ini untuk secara dinamis menentukan apakah akan merekam aliran live tertentu berdasarkan aturan bisnis Anda.
Control by ingest parameters
Jika metode pemicu templat perekaman diatur ke "Ingest parameter settings", Anda dapat langsung mengontrol perekaman aliran saat ini dengan menggunakan parameter record_config dalam URL ingest.
Format parameter:
record_config={"NeedRecord": <true/false>}Deskripsi parameter:
truemengaktifkan perekaman, sedangkanfalsemenonaktifkannya.Catatan: Saat membuat URL ingest, Anda harus melakukan URL-encode pada parameter tersebut.
Sebagai contoh, asumsikan URL ingest adalah: rtmp://push.example.com/live/stream1
Untuk mengaktifkan perekaman dengan parameter ini, gunakan URL berikut: rtmp://push.example.com/live/stream1?record_config=%7B%22NeedRecord%22%3Atrue%7D&auth_key=xxx
Batasan:
Metode pemicu ini hanya mendukung perekaman source stream, bukan transcoded streams. Jika perekaman Anda mencakup aliran yang telah dikodekan ulang, pilih metode pemicu yang berbeda.
Control by HTTP callback
Cara kerja
Saat aliran live diingest, jika metode pemicu untuk templat perekaman yang cocok diatur ke Callback confirmation, ApsaraVideo Live mengirim permintaan HTTP ke callback URL yang telah Anda konfigurasi sebelumnya untuk memeriksa apakah aliran tersebut akan direkam.
Server aplikasi Anda menerima permintaan tersebut dan mengembalikan instruksi perekaman (izinkan atau tolak) berdasarkan logika bisnis Anda.
ApsaraVideo Live kemudian memulai atau melewatkan perekaman sesuai dengan respons Anda.
Anda harus terlebih dahulu mengonfigurasi callback URL dalam pengaturan callback event domain. Untuk informasi selengkapnya, lihat Live recording callbacks dan On-demand recording callbacks.
Parameter permintaan
Parameter | Tipe | Deskripsi |
domain | String | Domain ingest. |
app | String | Nama aplikasi. |
stream | String | Nama aliran. |
codec | String | Format encoding. 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
Setelah server Anda menerima permintaan callback, server tersebut harus mengembalikan kode status HTTP 200 dan badan JSON yang berisi parameter berikut:
Parameter | Tipe | Wajib | Deskripsi |
ApiVersion | String | Tidak | Versi API. Nilai default: 1.0. |
NeedRecord | Bool | Ya | Menentukan apakah akan merekam aliran. |
Interval | JSONObject | Tidak | Menentukan interval perekaman untuk setiap format. Rentang nilai yang valid: 5 hingga 21600. Satuan: detik. |
Format | JSONArray | Tidak | Format perekaman. Format yang didukung meliputi MP4, FLV, dan M3U8. |
Contoh respons
{
"ApiVersion": "1.0",
"NeedRecord": true,
"Interval": {
"Mp4": 300,
"Flv": 120,
"M3U8": 180
},
"Format": ["mp4","flv"]
}Penanganan parameter respons
Setelah layanan perekaman menerima respons dari server Anda, layanan tersebut membandingkan parameter yang dikembalikan dengan konfigurasi perekaman asli dan menerapkan penggantian sebagai berikut:
Penggantian Interval: Jika respons mencakup parameter
Interval, nilainya akan menggantikan interval perekaman dalam konfigurasi perekaman asli.Interseksi Format: Parameter
Formatdalam respons diinterseksikan dengan format yang ditentukan dalam konfigurasi perekaman asli. Misalnya, jika templat perekaman asli dikonfigurasi untuk format MP4 dan FLV, sedangkan respons callback adalah["mp4", "m3u8"], hanya format MP4 yang direkam. Jika hasil interseksi kosong, aliran tidak akan direkam.
Titik akhir callback Anda harus mengembalikan kode status HTTP 200. Kode status lainnya dianggap sebagai kegagalan callback, sehingga perekaman dinonaktifkan secara default.
Ukuran maksimum badan respons callback adalah 2.048 byte. Respons yang melebihi batas ini akan dipotong untuk mencegah serangan berbahaya.
Catatan penggunaan
Jika layanan Anda menggunakan fitur penarikan aliran sesuai permintaan—di mana ApsaraVideo Live menarik aliran dari server origin hanya ketika pengguna memulai pemutaran dan berhenti menarik saat tidak ada penonton—ketentuan berikut berlaku:
Prasyarat perekaman: Dalam skenario penarikan aliran sesuai permintaan, perekaman (baik otomatis, sesuai permintaan, maupun manual) dimulai hanya setelah pengguna memulai pemutaran.
Tidak ada perekaman tanpa pemutaran: Jika tidak ada klien yang memutar aliran, ApsaraVideo Live tidak menarik aliran dari server origin, sehingga tidak ada file perekaman yang dihasilkan.