All Products
Search
Document Center

ApsaraVideo Live:Cloud recording

Last Updated:Aug 14, 2026

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

  1. Aktifkan layanan yang diperlukan: Aktifkan ARTC. Berdasarkan metode penyimpanan Anda:

    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.

  2. 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

Catatan
  • 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.

Catatan
  • 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

AppId

ID aplikasi.

ChannelId

ID channel.

UserId

ID pengguna—hanya berlaku untuk perekaman individual.

RecordMode

Mode rekaman. 0: individual, 1: composite.

StreamType

Jenis aliran. A: audio, V: video, AV: audio dan video.

SourceType

Sumber video. C: kamera, S: screen sharing.

StartTime

Waktu mulai rekaman dalam UTC, dalam milidetik.

Sequence

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}

Catatan
  • Jika Anda berlangganan nilai StreamType atau SourceType yang berbeda untuk UserId yang sama, {SourceType} ditambahkan setelah {UserId} dalam nama file default.

  • Ketika file diberi nama filename, path akhirnya adalah TaskId/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:

  1. Tentukan mode rekaman: Pilih individual (RecordMode: 0) atau composite (RecordMode: 1).

  2. Tentukan target subscription: Dalam SubscribeParams, cantumkan nilai UserId dan StreamType yang akan direkam.

  3. Tentukan format output: Dalam RecordParams, atur hanya audio (StreamType: 1) atau audio-dan-video (StreamType: 0).

  4. 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.

Catatan
  • 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.

Catatan

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.

Catatan
  • 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.