Rekam aliran audio dan video di saluran ARTC, lalu simpan rekaman ke OSS atau ApsaraVideo VOD untuk pemutaran ulang, pengarsipan, atau kepatuhan.
Ikhtisar fitur
Cloud recording menangkap aliran audio dan video di saluran ARTC melalui task berbasis API. Fitur utama:
-
Mode rekaman serbaguna: Rekam setiap pengguna secara terpisah (individual recording) atau gabungkan beberapa pengguna menjadi satu file (composite recording).
-
Subscription fleksibel: Rekam pengguna tertentu atau jenis aliran (kamera atau screen sharing) dalam suatu channel.
-
Output yang dapat dikustomisasi: Tata letak komposit kustom, gambar latar belakang, dan format output (MP4, MP3, HLS).
-
Penyimpanan cloud yang andal: Secara otomatis mengunggah rekaman ke OSS atau ApsaraVideo VOD.
Sebelum memulai
-
Aktifkan layanan yang diperlukan: Aktifkan ARTC. Berdasarkan metode penyimpanan Anda:
-
Simpan ke OSS: Aktifkan OSS dan buat bucket. Biaya penyimpanan berlaku. Biaya penyimpanan.
CatatanBerikan izin layanan: ARTC memerlukan akses tulis ke bucket OSS Anda, yang diberikan secara otomatis saat aktivasi. Jika dicabut, klik Grant Cloud Resource Access Authorization untuk memulihkannya.
-
Simpan ke VOD: Aktifkan ApsaraVideo VOD dan kelola bucket penyimpanan Anda. Biaya penyimpanan berlaku. Penagihan layanan dasar.
Penting-
Konsistensi wilayah: Bucket penyimpanan dan titik akhir API harus berada di wilayah yang sama.
-
Pembuatan file rekaman: Setelah rekaman berakhir, file disimpan ke bucket yang ditentukan dalam permintaan API Anda.
-
-
Pahami penagihan:
-
Cloud recording diaktifkan secara default tanpa perlu aktivasi terpisah.
-
Cloud recording adalah fitur berbayar. Biaya Cloud Recording.
-
Konsep utama
Mode rekaman
Pilih mode rekaman berdasarkan kasus penggunaan Anda.
-
Individual recording
Merekam audio dan video setiap pengguna ke file terpisah. Ideal untuk analisis individu atau post-processing.
-
Secara default, parameter rekaman sesuai dengan aliran aslinya.
-
Jika aliran terputus, sistem mengisi dengan keheningan, layar hitam, atau frame terakhir untuk menjaga kontinuitas.
-
-
Composite recording
Menggabungkan audio dan video dari beberapa pengguna ke dalam satu file. Cocok untuk skenario multiperson seperti rapat dan pendidikan daring.
-
Kustomisasi resolusi video output, bitrate, dan laju frame.
-
Tata letak video kustom (hingga 17 panel) dan gambar latar belakang kanvas.
-
Jika aliran pengguna terputus, panelnya menampilkan gambar latar belakang yang telah ditentukan atau layar hitam.
-
Siklus hidup task rekaman
-
Task secara otomatis berhenti setelah berjalan selama 72 jam (siklus hidup maksimum), terlepas dari statusnya.
-
Task yang dihentikan memicu callback stop. Gunakan callback tersebut untuk mengonfirmasi bahwa task telah berakhir dan melakukan kueri terhadap file yang direkam.
-
Jika task tetap idle lebih lama dari
MaxIdleTime, task tersebut akan berhenti secara otomatis. Rentang valid: 10–14.400 detik (4 jam). Default: 300 detik.-
Dalam mode composite, task dianggap idle ketika semua aliran yang di-subscribe berhenti dipublikasikan.
-
Dalam mode individual, setiap aliran dilacak secara independen. Aliran berhenti merekam setelah
MaxIdleTime-nya sendiri berlalu. Task hanya berhenti setelah semua aliran yang di-subscribe timeout.
-
Pembuatan dan penyimpanan file
Format file rekaman
-
Hanya audio: Mendukung format MP3 dan AAC.
-
Audio dan video: Mendukung format MP4 dan HLS.
-
File HLS selalu dihasilkan, bahkan jika tidak ditentukan dalam permintaan.
-
Setiap format file tambahan dikenai biaya terpisah.
Aturan penamaan file
Rekaman disimpan di bawah direktori TaskId di path OSS atau ApsaraVideo VOD yang Anda tentukan. Kustomisasi nama file dengan variabel preset.
Variabel nama file:
|
Parameter |
Deskripsi |
|
|
ID aplikasi. |
|
|
ID channel. |
|
|
ID pengguna—hanya berlaku untuk perekaman individual. |
|
|
Mode rekaman. 0: individual, 1: composite. |
|
|
Jenis aliran. A: audio, V: video, AV: audio dan video. |
|
|
Sumber video. C: kamera, S: screen sharing. |
|
|
Waktu mulai rekaman dalam UTC, dalam milidetik. |
|
|
Nomor indeks slice HLS. |
Nama file default:
-
Individual recording:
-
Format HLS:
{AppId}_{ChannelId}_{UserId}_{StartTime}_{Sequence} -
Format lain:
{AppId}_{ChannelId}_{UserId}_{StartTime}
-
-
Composite recording:
-
Format HLS:
{AppId}_{ChannelId}_{StartTime}_{Sequence} -
Format lain:
{AppId}_{ChannelId}_{StartTime}
-
-
Jika Anda berlangganan nilai
StreamTypeatauSourceTypeyang berbeda untukUserIdyang sama,{SourceType}ditambahkan setelah{UserId}dalam nama file default. -
Ketika file diberi nama
filename, path akhirnya adalahTaskId/filename.M3U8.TaskId, yang dihasilkan saat task dimulai, secara otomatis ditambahkan di awal path penyimpanan.
Strategi pemotongan file
Pemotongan file membagi rekaman menjadi beberapa file. Atur durasi maksimum potongan dengan MaxFileDuration: 180–7.200 detik (default: 7.200 detik / 2 jam).
Prosedur
Alur kerja cloud recording sepenuhnya didorong oleh API. Langkah-langkah berikut mencakup operasi inti dengan contoh parameter.
Langkah 1: Mulai task rekaman
Panggil API Start an ARTC cloud recording task. Konfigurasikan parameter subscription, rekaman, dan penyimpanan dalam permintaan.
Parameter utama:
-
Tentukan mode rekaman: Pilih individual (
RecordMode: 0) atau composite (RecordMode: 1). -
Tentukan target subscription: Dalam
SubscribeParams, cantumkan nilaiUserIddanStreamTypeyang akan direkam. -
Tentukan format output: Dalam
RecordParams, atur hanya audio (StreamType: 1) atau audio-dan-video (StreamType: 0). -
Konfigurasikan penyimpanan: Dalam
StorageParams, tentukan OSS atau ApsaraVideo VOD serta berikan bucket dan titik akhirnya.
Contoh skenario
Rekaman individual hanya audio
Skenario: Di channel myRoom, terdapat tiga pengguna: userA, userB, dan userC. Rekam aliran audio userA dan userB secara individual, tanpa merekam userC. Juga, hasilkan file M3U8 dan MP3.
Hasil rekaman: File yang direkam disimpan di bucket Object Storage Service (OSS) yang ditentukan, my-bucket. File dalam format M3U8 disimpan di path hls/{taskId}, dan file dalam format MP3 disimpan di path mp3/{taskId}.
Contoh parameter:
{
"AppId": "my-app-id", // AppId yang digunakan untuk streaming
"ChannelId": "myRoom", // Channel yang akan direkam
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // Pengguna yang akan direkam
"StreamType": 1 // Berlangganan aliran hanya audio
},
{
"UserId": "userB", // Pengguna yang akan direkam
"StreamType": 1 // Berlangganan aliran hanya audio
}
]
},
"RecordParams": {
"RecordMode": 0, // Tentukan mode individual recording
"StreamType": 1, // Tentukan format output hanya audio
"MaxFileDuration": 180 // Atur durasi potongan file menjadi 180 detik (3 menit)
},
"StorageParams": {
"StorageType": 1, // Tentukan penyimpanan ke OSS
"FileInfo": [ // Hasilkan file M3U8 dan MP3, simpan masing-masing di path "hls" dan "mp3"
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP3",
"FilePathPrefix": [
"mp3"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"NotifyUrl": "http://mytest/callback", // Opsional: URL untuk menerima pesan callback
"NotifyAuthKey": "12345678abcdefghikj" // Opsional: Kunci otentikasi untuk pesan callback
}
Rekaman individual audio dan video
Skenario: Di channel myRoom, terdapat tiga pengguna: userA, userB, dan userC. Rekam aliran audio dan video userA dan userB secara individual, tanpa merekam userC. Juga, hasilkan file M3U8 dan MP4.
Hasil rekaman: File disimpan di bucket OSS yang ditentukan, my-bucket. File M3U8 disimpan di path hls/{taskId}, dan file MP4 disimpan di path mp4/{taskId}.
Contoh parameter:
{
"AppId": "my-app-id", // AppId yang digunakan untuk streaming
"ChannelId": "myRoom", // Channel yang ditentukan untuk streaming
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // Pengguna yang akan direkam
"StreamType": 0 // Berlangganan aliran audio dan video
},
{
"UserId": "userB", // Pengguna yang akan direkam
"StreamType": 0 // Berlangganan aliran audio dan video
}
]
},
"RecordParams": {
"RecordMode": 0, // Tentukan mode individual recording
"StreamType": 0, // Tentukan format output audio dan video
"MaxFileDuration": 180 // Atur durasi potongan file menjadi 180 detik (3 menit)
},
"StorageParams": {
"StorageType": 1, // Tentukan penyimpanan ke OSS
"FileInfo": [ // Hasilkan file M3U8 dan MP4, simpan masing-masing di path "hls" dan "mp4"
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP4",
"FilePathPrefix": [
"mp4"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"NotifyUrl": "http://mytest/callback", // Opsional: URL untuk menerima pesan callback
"NotifyAuthKey": "12345678abcdefghikj" // Opsional: Kunci otentikasi untuk pesan callback
}
Rekaman composite hanya audio
Skenario: Di channel myRoom, terdapat tiga pengguna: userA, userB, dan userC. Rekam percakapan antara userA dan userB sebagai satu aliran composite, tanpa merekam userC. Juga, hasilkan file M3U8 dan MP3.
Hasil rekaman: File disimpan di bucket OSS yang ditentukan, my-bucket. File M3U8 disimpan di path hls/{taskId}, dan file MP3 disimpan di path mp3/{taskId}.
Contoh parameter:
{
"AppId": "my-app-id", // AppId yang digunakan untuk streaming
"ChannelId": "myRoom", // Channel yang ditentukan untuk streaming
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // Pengguna yang akan direkam
"StreamType": 1 // Berlangganan aliran hanya audio
},
{
"UserId": "userB", // Pengguna yang akan direkam
"StreamType": 1 // Berlangganan aliran hanya audio
}
]
},
"RecordParams": {
"RecordMode": 1, // Tentukan mode composite recording
"StreamType": 1, // Tentukan format output hanya audio
"MaxFileDuration": 180 // Atur durasi potongan file menjadi 180 detik (3 menit)
},
"StorageParams": {
"StorageType": 1, // Tentukan penyimpanan ke OSS
"FileInfo": [ // Hasilkan file M3U8 dan MP3, simpan masing-masing di path "hls" dan "mp3"
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP3",
"FilePathPrefix": [
"mp3"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"MixTranscodeParams": {
"AudioBitrate": 128, // Bitrate audio
"AudioChannels": 2, // Jumlah channel audio
"AudioSampleRate": 44100 // Laju sampel
},
"NotifyUrl": "http://mytest/callback", // Opsional: URL untuk menerima pesan callback
"NotifyAuthKey": "12345678abcdefghikj" // Opsional: Kunci otentikasi untuk pesan callback
}
Rekaman composite audio dan video
Skenario: Di channel myRoom, terdapat tiga pengguna: userA, userB, dan userC. Rekam aliran audio dan kamera userA dan userB, serta hanya aliran audio userC. Juga, hasilkan file M3U8 dan MP4.
Video hasil mengatur panel untuk userA dan userB sebagai berikut:
Hasil rekaman: File disimpan di my-bucket OSS yang ditentukan. File M3U8 disimpan di path hls/{taskId}, dan file MP4 disimpan di path mp4/{taskId}.
Contoh parameter:
{
"AppId": "my-app-id", // AppId yang digunakan untuk streaming
"ChannelId": "myRoom", // Channel yang ditentukan untuk streaming
"SubscribeParams": {
"SubscribeUserIdList": [
{
"UserId": "userA", // Pengguna yang akan direkam
"StreamType": 0, // Berlangganan aliran audio dan video
"SourceType": 0 // Berlangganan aliran kamera
},
{
"UserId": "userB", // Pengguna yang akan direkam
"StreamType": 0, // Berlangganan aliran audio dan video
"SourceType": 0 // Berlangganan aliran kamera
},
{
"UserId": "userC", // Pengguna yang akan direkam
"StreamType": 1 // Berlangganan aliran hanya audio
}
]
},
"RecordParams": {
"RecordMode": 1, // Tentukan mode composite recording
"StreamType": 0, // Tentukan format output audio dan video
"MaxFileDuration": 180 // Atur durasi potongan file menjadi 180 detik (3 menit)
},
"StorageParams": {
"StorageType": 1, // Tentukan penyimpanan ke OSS
"FileInfo": [ // Hasilkan file M3U8 dan MP4, simpan masing-masing di path "hls" dan "mp4"
{
"Format": "HLS",
"FilePathPrefix": [
"hls"
]
},
{
"Format": "MP4",
"FilePathPrefix": [
"mp4"
]
}
],
"OSSParams": {
"OSSEndpoint": "oss-cn-shanghai.aliyuncs.com",
"OSSBucket": "my-bucket"
}
},
"MixTranscodeParams": {
"AudioBitrate": 128,
"AudioChannels": 2,
"AudioSampleRate": 44100,
"VideoCodec": "H.264",
"VideoBitrate": 500,
"VideoFramerate": 30,
"VideoGop": 30,
"VideoHeight": 480, // Tinggi video akhir
"VideoWidth": 640 // Lebar video akhir
},
"MixLayoutParams": {
"UserPanes": [
{
"userId": "userA",
"sourceType": 0,
"height": "1", // Menempati tinggi penuh kanvas
"width": "0.5", // Menempati separuh lebar kanvas
// Menempatkan panel di pojok kiri atas kanvas
"x": "0",
"y": "0"
},
{
"userId": "userB",
"sourceType": 0,
"height": "1", // Menempati tinggi penuh kanvas
"width": "0.5", // Menempati separuh lebar kanvas
// Menempatkan panel mulai dari titik tengah horizontal kanvas
"x": "0.5",
"y": "0"
}
]
},
"NotifyUrl": "http://mytest/callback", // Opsional: URL untuk menerima pesan callback
"NotifyAuthKey": "12345678abcdefghikj" // Opsional: Kunci otentikasi untuk pesan callback
}
Langkah 2 (Opsional): Perbarui task rekaman
Panggil API Update an ARTC cloud recording task untuk mengubah parameter rekaman saat task sedang berjalan.
-
Mode individual: Hanya subscription yang dapat diperbarui.
-
Mode composite: Subscription dan tata letak keduanya dapat diperbarui.
Langkah 3: Hentikan task rekaman
Untuk mengakhiri rekaman, panggil API Stop an ARTC cloud recording task.
Sistem memproses dan mengunggah file rekaman akhir setelah panggilan ini. Task dianggap selesai hanya setelah Anda menerima callback stop. Jangan menghapus atau memodifikasi sumber daya penyimpanan sebelum menerima callback tersebut.
Langkah 4: Lakukan kueri terhadap task dan file
Panggil API Query ARTC cloud recording files and task status untuk memeriksa status task dan file yang direkam.
-
Hanya task yang ada yang dapat dikueri. API mengembalikan error untuk task yang tidak ada.
-
Informasi file rekaman tersedia untuk task yang berhasil dimulai dan berjalan kurang dari 72 jam. API mengembalikan error setelah 72 jam.