Membuat tugas pencampuran aliran dan transkoding.
Deskripsi operasi
Secara default, setiap ID aplikasi mendukung maksimal 200 tugas ingest aliran tunggal dan 40 tugas pencampuran serta transkoding aliran. Untuk menambah kuota, kirim tiket.
Siklus hidup tugas pencampuran aliran
Mulai
-
Ketika seorang streamer mulai streaming untuk pertama kalinya, Anda dapat memanggil StartLiveMPUTask untuk memulai tugas bypass.
Jika tidak ada pengguna di saluran, kesalahan "saluran tidak ada" dikembalikan.
Aliran bypass hanya di-output ketika pengguna memulai ingest aliran. Jika pengguna dalam tugas aliran tunggal tidak melakukan ingest aliran, aliran bypass tidak dapat diputar.
Untuk tugas pencampuran aliran, minimal satu pengguna harus melakukan ingest aliran agar aliran bypass dapat diputar. Area tata letak untuk pengguna yang tidak melakukan ingest aliran akan menampilkan Layar hitam.
-
Anda dapat mencatat status tugas bypass, jenis tugas, dan parameter tugas di server bisnis Anda.
Status tugas: Started, Stopped.
Jenis tugas: Single-stream, Stream mixing.
Parameter tugas: Parameter input terbaru. Misalnya, setelah pemanggilan UpdateLiveMPUTask berhasil, catat parameter tugas terbaru.
-
Dalam skenario co-streaming atau PK, jika tugas telah diperbarui menjadi tugas pencampuran aliran dan streamer keluar dari saluran secara tak terduga lalu kembali bergabung, server bisnis Anda dapat memanggil StartLiveMPUTask untuk memulai ulang tugas pencampuran aliran berdasarkan jenis dan parameter tugas yang tersimpan.
Jika sistem belum secara otomatis menghapus tugas sebelum Anda memulainya, tugas akan dimulai dengan sukses.
Jika sistem belum menghapus tugas, kode kesalahan Task already exists dikembalikan.
Akhir
Ketika streamer meninggalkan saluran, panggil StopLiveMPUTask untuk menghentikan tugas bypass.
Jika semua pengguna dalam tugas meninggalkan saluran dan StopLiveMPUTask tidak dipanggil, sistem secara otomatis menghentikan tugas bypass setelah 2 menit.
Batas QPS
Batas permintaan per detik (QPS) untuk API ini per pengguna tunggal adalah 500 panggilan/detik. Jika Anda melebihi batas ini, panggilan API akan dikenai pengendalian aliran, yang dapat memengaruhi bisnis Anda. Kami menyarankan agar Anda memanggil API ini secara wajar.
Coba sekarang
Test
RAM authorization
|
Action |
Access level |
Resource type |
Condition key |
Dependent action |
|
live:StartLiveMPUTask |
create |
*全部资源
|
None | None |
Parameter permintaan
|
Parameter |
Type |
Required |
Description |
Example |
| AppId |
string |
Yes |
ID aplikasi. Hanya satu ID yang didukung. ID ini dapat berisi huruf besar, huruf kecil, angka, garis bawah (_), dan tanda hubung (-). Panjang maksimum adalah 64 karakter. |
yourAppId |
| ChannelId |
string |
Yes |
ID saluran. Hanya satu ID yang didukung. ID ini dapat berisi huruf besar, huruf kecil, angka, garis bawah (_), dan tanda hubung (-). Panjang maksimum adalah 64 karakter. |
yourChannelId |
| TaskId |
string |
Yes |
ID tugas. Hanya satu ID yang didukung. ID ini dapat berisi huruf besar, huruf kecil, angka, garis bawah (_), dan tanda hubung (-). Panjang maksimum adalah 55 karakter. ID ini merupakan pengidentifikasi unik untuk tugas ingest bypass. Jika tugas dengan ID yang sama masih ada dan belum dihapus saat Anda memulai tugas baru, `InvalidParam` dikembalikan. |
yourTaskId |
| MixMode |
string |
Yes |
Mode pencampuran aliran. Nilai yang valid:
|
0 |
| StreamURL |
string |
No |
URL ingest live. Hanya protokol RTMP yang didukung. Hanya satu URL yang didukung. Panjang maksimum adalah 2.048 karakter. Untuk informasi tentang cara menghasilkan URL, lihat Ingest URLs and playback URLs. Catatan
|
rtmp://example.com/live/stream |
| MultiStreamURL |
array<object> |
No |
Parameter untuk ingest ke beberapa URL. Anda dapat menentukan beberapa URL ingest live. Catatan
Saat menyetel URL ingest untuk tugas, Anda harus mengonfigurasi salah satu parameter StreamURL atau MultiStreamURL, tetapi tidak keduanya. |
|
|
object |
No |
|||
| URL |
string |
No |
URL ingest live. Hanya protokol RTMP yang didukung. Panjang maksimum adalah 2.048 karakter. Untuk informasi tentang cara menghasilkan URL, lihat Ingest URLs and playback URLs. |
rtmp://example.com/live/stream**** |
| IsAliCdn |
boolean |
No |
Menentukan apakah aliran di-ingest ke Alibaba Cloud CDN.
Catatan
Nilai default adalah false. |
false |
| Region |
string |
No |
Wilayah tempat layanan pencampuran aliran berada. Nilai yang valid:
|
CN-Shanghai |
| MaxIdleTime |
string |
No |
Periode timeout idle. Satuan: detik. Nilai harus berada dalam rentang [10, 86400]. Catatan
Jika Anda menyetel parameter ini, tugas akan secara otomatis dihentikan ketika periode idle-nya melebihi MaxIdleTime. Jika Anda tidak menyetel parameter ini, tugas akan dihentikan segera setelah saluran ditutup. |
10 |
| SingleSubParams |
object |
No |
Parameter untuk ingest aliran tunggal. Parameter ini wajib ditentukan ketika MixMode disetel ke 0. Jangan menyetel parameter ini untuk pencampuran dan transkoding aliran. |
|
| SourceType |
string |
No |
Jenis aliran video input dalam mode ingest aliran tunggal. Parameter ini hanya berlaku untuk aliran video (StreamType=2). Nilai yang valid:
|
camera |
| StreamType |
string |
No |
Jenis aliran yang di-ingest dalam mode ingest aliran tunggal. Nilai yang valid:
|
0 |
| UserId |
string |
Yes |
ID pengguna yang alirannya di-ingest. Hanya satu aliran yang dapat di-ingest dalam satu waktu. |
yourSubUserId |
| TranscodeParams |
object |
No |
Parameter untuk pencampuran dan transkoding aliran. Parameter ini wajib ditentukan ketika MixMode disetel ke 1. Jangan menyetel parameter ini untuk ingest aliran tunggal. |
|
| Background |
object |
No |
Gambar latar belakang global untuk aliran campuran. |
|
| RenderMode |
string |
No |
Mode tampilan video output. Nilai yang valid:
|
1 |
| URL |
string |
No |
URL gambar latar belakang global. Panjang maksimum adalah 2.048 karakter. |
yourImageUrl |
| EncodeParams |
object |
No |
Parameter encoding untuk aliran output. |
|
| AudioOnly |
string |
No |
Menentukan apakah aliran hanya berisi audio. Nilai yang valid:
|
false |
| AudioBitrate |
string |
No |
Bitrate audio. Satuan: kbps. Nilai harus berada dalam rentang [8, 500]. |
128 |
| AudioChannels |
string |
No |
Jumlah saluran audio. Nilai yang valid: 1, 2. |
2 |
| AudioSampleRate |
string |
No |
Laju pengambilan sampel audio. Satuan: Hz. Nilai yang valid: 8000, 16000, 32000, 44100, 48000. |
44100 |
| VideoCodec |
string |
No |
Format encoding video. Nilai yang valid:
|
H.264 |
| VideoBitrate |
string |
No |
Bitrate video. Satuan: kbps. Nilai harus berada dalam rentang [1, 10000]. |
3500 |
| VideoFramerate |
string |
No |
Laju bingkai video. Satuan: fps. Nilai harus berada dalam rentang [1, 60]. |
25 |
| VideoGop |
string |
No |
Ukuran GOP video. Nilai harus berada dalam rentang [1, 60]. |
20 |
| VideoHeight |
string |
No |
Tinggi video. Satuan: piksel. Nilai harus berada dalam rentang [0, 1920]. |
1000 |
| VideoWidth |
string |
No |
Lebar video. Satuan: piksel. Nilai harus berada dalam rentang [0, 1920]. |
1920 |
| EnhancedParam |
string |
No |
Parameter encoding tingkat lanjut. Ini adalah string JSON. Konfigurasi opsional yang didukung meliputi `profile` dan `preset`.
Catatan
Sebagai contoh, "superfast" terutama digunakan untuk komunikasi real-time. Jika Anda bukan ahli dalam penyandi, jangan menyetel opsi ini. |
{"profile": "high", "preset": "veryfast"} |
| Layout |
object |
No |
Informasi tata letak video. Catatan
Untuk transkoding video, Anda harus menentukan informasi tata letak video, termasuk koordinat (X, Y), dimensi panel (Width, Height), dan urutan penumpukan (ZOrder). Untuk transkoding hanya audio, jangan tentukan informasi tata letak video. |
|
| UserPanes |
array<object> |
No |
Informasi tentang panel pengguna dalam aliran campuran. |
|
|
array<object> |
No |
Informasi tentang panel pengguna dalam aliran campuran. |
||
| UserInfo |
object |
No |
Informasi tentang pengguna yang sesuai dengan panel ini. Jika Anda tidak menyetel parameter ini, sistem akan mengisinya secara otomatis berdasarkan urutan streamer bergabung ke saluran. Catatan
|
|
| SourceType |
string |
No |
Jenis aliran video input dalam mode pencampuran dan transkoding aliran. Parameter ini hanya berlaku untuk aliran video (StreamType=2). Nilai yang valid:
|
camera |
| ChannelId |
string |
No |
ID saluran tempat pengguna berada. Anda tidak perlu menyetel parameter ini untuk pengguna dalam saluran yang sama. Untuk pencampuran aliran lintas saluran, setel parameter ini. |
yourChannelId |
| UserId |
string |
No |
ID pengguna. |
yourSubUserId |
| Height |
string |
No |
Tinggi panel, dalam persentase ternormalisasi. |
0.2632 |
| Width |
string |
No |
Lebar panel, dalam persentase ternormalisasi. |
0.3564 |
| X |
string |
No |
Koordinat X, dalam persentase ternormalisasi. |
0.2456 |
| Y |
string |
No |
Koordinat Y, dalam persentase ternormalisasi. |
0.3789 |
| ZOrder |
string |
No |
Urutan penumpukan. 0 adalah lapisan paling bawah. Lapisan 1 berada di atas lapisan 0, dan seterusnya. |
0 |
| BackgroundImageUrl |
string |
No |
URL gambar latar belakang untuk panel video. Panjang maksimum adalah 2.048 karakter. Saat pengguna mematikan kamera atau belum bergabung ke saluran, gambar ini akan ditampilkan di posisi tata letak mereka. |
yourImageUrl |
| RenderMode |
string |
No |
Mode tampilan panel video output. Nilai yang valid:
|
1 |
| UserInfos |
array<object> |
No |
Informasi tentang pengguna yang akan di-subscribe untuk pencampuran aliran. Jika Anda tidak menentukan pengguna, semua pengguna akan disertakan dalam aliran campuran. |
|
|
object |
No |
Informasi pengguna untuk pencampuran aliran. |
||
| SourceType |
string |
No |
Jenis aliran video input yang akan di-subscribe untuk pencampuran aliran. Parameter ini hanya berlaku untuk aliran video (StreamType=2). Nilai yang valid:
|
camera |
| StreamType |
string |
No |
Jenis aliran yang akan di-subscribe untuk pencampuran aliran. Nilai yang valid:
|
0 |
| ChannelId |
string |
No |
ID saluran tempat pengguna yang di-subscribe berada. Anda tidak perlu menyetel parameter ini untuk pengguna dalam saluran yang sama. Untuk pencampuran aliran lintas saluran, setel parameter ini. |
yourChannelId |
| UserId |
string |
Yes |
ID pengguna yang akan di-subscribe untuk pencampuran aliran. |
yourSubUserId |
| SeiParams |
object |
No |
Parameter konfigurasi SEI. |
|
| LayoutVolume |
object |
No |
SEI tata letak dan volume. Konten parameter ini dapat kosong, yang berarti SEI tata letak dan volume default dibawa. |
|
| FollowIdr |
string |
No |
Menentukan apakah SEI dipastikan dibawa saat mengirim keyframe IDR. Nilai yang valid:
|
0 |
| Interval |
string |
No |
Interval pengiriman SEI. Satuan: milidetik. Nilai harus berada dalam rentang [1000, 5000]. |
1000 |
| PassThrough |
object |
No |
SEI transmisi langsung. |
|
| FollowIdr |
string |
No |
Menentukan apakah SEI dipastikan dibawa saat mengirim keyframe IDR. Nilai yang valid:
|
0 |
| Interval |
string |
No |
Interval pengiriman SEI. Satuan: milidetik. Nilai harus berada dalam rentang [1000, 5000]. |
1000 |
| PayloadContent |
string |
No |
Konten muatan SEI transmisi langsung. |
yourPayloadContent |
| PayloadContentKey |
string |
No |
Kunci yang sesuai dengan konten muatan SEI transmisi langsung. Jika tidak disetel, kunci default adalah `udd`. |
yourPayloadContentKey |
| PayloadType |
string |
No |
payload_type kustom pesan SEI. Nilai harus berada dalam rentang 100–254. Jika tidak disetel, payload_type default adalah 5. |
100 |
Layout and volume SEI
| Parameter | Description |
| canvas | Informasi kanvas. Parameter: - w: Lebar kanvas dalam piksel. - h: Tinggi kanvas dalam piksel. - bgnd: Warna latar belakang kanvas, sebagai bilangan heksadesimal integer dalam format RGB. |
| stream | Informasi aliran video. Parameter: - uid: ID pengguna streamer. - paneid: ID panel wilayah, dalam rentang [0, 8]. - zorder: Urutan penumpukan wilayah, dalam rentang [0, 99]. - x: Koordinat X wilayah pada kanvas, sebagai persentase ternormalisasi. - y: Koordinat Y wilayah pada kanvas, sebagai persentase ternormalisasi. - w: Lebar wilayah, sebagai persentase ternormalisasi. - h: Tinggi wilayah, sebagai persentase ternormalisasi. - type: Jenis aliran video di wilayah tersebut. 0: Kamera. 1: Berbagi layar. - status: Status aliran video di wilayah tersebut. 0: Belum ditarik. 1: Sudah ditarik. - muted: Status bisu streamer. 0: Tidak dibisukan. 1: Dibisukan. Dalam skenario PK, jika streamer A membisukan streamer B, bidang `muted` untuk streamer B menunjukkan status dibisukan. - vol: Volume streamer dalam desibel, dalam rentang [0, 255]. - vad: Deteksi aktivitas suara. Nilainya dalam rentang [0, 150]. 150 menunjukkan suara terdeteksi. Nilai selain 150 menunjukkan waktu peluruhan dari suara ke diam. |
| ts | Timestamp sistem operasi saat informasi ini dihasilkan, dalam milidetik. |
| ver | Versi format SEI, seperti 1.0.0.20220915. |
| udd | Event berbasis skenario kustom yang dikirim melalui parameter `PassThrough`. Kontennya ditentukan oleh parameter `PayloadContent`. |
Saat pengguna menarik aliran yang di-ingest, data media streaming berisi informasi SEI. Anda dapat menggunakan fitur ini untuk meneruskan informasi kustom. Informasi SEI dapat diambil dari data bingkai video selama decoding aliran video. Untuk format spesifik, lihat parameter `PassThrough`.
Contoh untuk skenario co-streaming:
Jika hanya ada satu streamer, koleksi `stream` dalam informasi SEI yang diterima penonton hanya berisi informasi untuk satu anggota. Jika streamer berada dalam sesi co-streaming atau PK, koleksi `stream` berisi informasi untuk beberapa anggota.
Sebagai contoh, saat streamer `streamer111` melakukan streaming sendirian, format bingkai SEI yang diterima penonton adalah sebagai berikut:{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696105170}
Saat streamer `streamer111` melakukan co-streaming dengan penonton `viewer222`, format bingkai SEI yang diterima penonton adalah sebagai berikut:{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":0,"zorder":1,"x":0,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":1,"vad":119},{"uid":"viewer222","paneid":1,"zorder":1,"x":0.5018382,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":60,"vad":123}],"ver":"1.0.0.20220915","ts":1697696106230}
Dengan memeriksa jumlah elemen dalam array `stream`, Anda dapat menentukan apakah tata letak live telah berubah. Jika array `stream` memiliki satu elemen, satu streamer sedang meng-ingest aliran. Jika array `stream` memiliki lebih dari satu elemen, streamer berada dalam sesi co-streaming atau PK. Informasi tata letak untuk setiap anggota menunjukkan posisi spesifik mereka dalam tata letak aliran campuran.
Pass-through SEI
Untuk menggunakan SEI kustom, Anda dapat memanggil perintah StartLiveMPUTask untuk memulai tugas pencampuran dan ingest aliran serta menentukan `PayloadContent` dalam parameter `PassThrough`. Anda juga dapat memanggil perintah UpdateLiveMPUTask untuk memperbarui tugas dan menentukan `PayloadContent` dalam parameter `PassThrough`.
SEI kustom dapat dikirim secara berkala. Anda dapat menyetel periode tersebut menggunakan parameter `Interval` dalam `PassThrough`. Satuannya adalah milidetik.
- SEI kustom juga dapat dikirim bersama keyframe. Anda dapat menyetel ini menggunakan parameter `FollowIdr` dalam `PassThrough`.
Anda dapat mengirim SEI baik secara berkala maupun bersama keyframe. Sebagai contoh, `Interval:1000` dan `FollowIdr: 1` berarti SEI kustom dikirim setiap 1000 ms dan juga bersama setiap keyframe.
Jika Anda tidak menyetel `Interval` atau `FollowIdr`, SEI kustom hanya dikirim sekali saat API dipanggil.
Sebagai contoh, saat streamer `streamer111` melakukan streaming sendirian, Anda dapat memanggil perintah UpdateLiveMPUTask untuk mengirim SEI berkala. Dalam parameter `PassThrough`, setel `Interval` ke 1000, `FollowIdr` ke 0, dan `PayloadContent` ke "hello world". Pesan SEI kustom kemudian dikirim setiap 1000 ms. Format bingkai SEI yang diterima penonton adalah sebagai berikut:{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696109876,"udd":"hello world"}
Pencampuran aliran multi-pengguna lintas saluran
Untuk mencampur aliran dari beberapa streamer di beberapa saluran dan meng-ingest aliran campuran ke layanan streaming live, Anda harus memberikan UserID dan ChannelID streamer yang memulai panggilan lintas saluran, bersama dengan UserID peserta lainnya, sebagai parameter input saat membuat tugas pencampuran aliran. Lihat contoh berikut: Dalam skenario PK live, streamer `userA` di saluran `channelA` memulai PK lintas saluran dengan streamer `userB` di saluran `channelB` menggunakan API client. Aliran campuran kedua streamer tersebut di-output ke penonton di saluran `channelA`. Dalam kasus ini, parameter saluran dan pengguna untuk membuat tugas pencampuran aliran ditentukan sebagai berikut:
ChannelID: Tentukan `channelA`.
UserInfos->UserId: Tentukan masing-masing `userA` dan `userB`.
Sebelum Anda dapat membuat tugas pencampuran aliran multi-pengguna lintas saluran, panggilan lintas saluran harus dimulai melalui kit pengembangan perangkat lunak (SDK) client. Jika pengguna di saluran berbeda tidak berada dalam panggilan, Anda tidak dapat membuat tugas pencampuran aliran lintas saluran. Untuk informasi lebih lanjut tentang cara memulai panggilan lintas saluran, lihat Cross-channel subscription.
Elemen respons
|
Element |
Type |
Description |
Example |
|
object |
ID permintaan. |
||
| RequestId |
string |
ID permintaan. |
0F72851F-5DC1-1979-9B2C-450040316C3E |
Contoh
Respons sukses
JSONformat
{
"RequestId": "0F72851F-5DC1-1979-9B2C-450040316C3E"
}
Kode kesalahan
|
HTTP status code |
Error code |
Error message |
Description |
|---|---|---|---|
| 400 | InvalidParam | %s. | |
| 400 | InvalidAppId | %s, please check and try again later. | |
| 400 | MissingParam | %s, please check and try again later. | |
| 500 | InternalError | InternalError | |
| 403 | OperationDenied | Your account has not enabled the Live service | |
| 403 | Forbidden | %s, please check and try again later. |
Lihat Error Codes untuk daftar lengkap.
Catatan rilis
Lihat Release Notes untuk daftar lengkap.