Membuat tugas relay aliran campuran.
Deskripsi operasi
Secara default, Anda dapat membuat hingga 200 tugas relay aliran tunggal dan hingga 40 tugas relay aliran campuran untuk satu aplikasi. Untuk menambah kuota, kirim tiket.
Siklus hidup tugas relay aliran
Mulai
-
Panggil operasi StartLiveMPUTask untuk membuat tugas.
Jika tidak ada pengguna yang bergabung ke saluran, sistem akan mengembalikan error yang menunjukkan bahwa saluran tidak ada.
Relay aliran tidak dilakukan jika tidak ada aliran yang diingest. Dalam kasus ini, tidak tersedia aliran relay untuk diputar.
Jika tugas berada dalam mode relay aliran campuran, pastikan setidaknya satu pengguna mengingest aliran yang dapat direlay untuk diputar. Layar hitam ditampilkan di panel pengguna yang tidak mengingest aliran.
-
Kami menyarankan agar Anda mencatat status tugas, mode tugas, dan parameter tugas di server bisnis Anda.
Status tugas: dimulai atau dihentikan.
Mode tugas: relay aliran tunggal atau relay aliran campuran.
Parameter tugas: parameter input terbaru. Misalnya, setelah panggilan operasi UpdateLiveMPUTask berhasil, catat parameter tugas tersebut sebagai yang terbaru.
-
Dalam skenario co-streaming atau battle, tugas berada dalam mode relay aliran campuran. Jika streamer meninggalkan saluran karena pengecualian dan kembali bergabung ke saluran, Anda dapat langsung memanggil operasi StartLiveMPUTask di server bisnis Anda untuk memulai relay aliran berdasarkan parameter tugas yang telah dicatat.
Jika tugas belum secara otomatis dihapus oleh sistem, tugas akan langsung dimulai.
Jika tugas sudah ada, sistem akan mengembalikan pesan yang menunjukkan bahwa tugas sudah ada.
Akhir
Setelah streamer meninggalkan saluran, Anda perlu memanggil operasi StopLiveMPUTask untuk menghentikan tugas.
Jika semua pengguna yang ditentukan dalam tugas telah meninggalkan saluran tetapi Anda tidak memanggil operasi StopLiveMPUTask, sistem akan menghentikan tugas dalam waktu 2 menit.
Batas QPS
Anda dapat memanggil operasi ini hingga 500 kali per detik per akun. Permintaan yang melebihi batas ini akan dibuang dan dapat menyebabkan gangguan layanan. Kami menyarankan agar Anda memperhatikan batas ini saat memanggil operasi ini.
Coba sekarang
Test
RAM authorization
|
Action |
Access level |
Resource type |
Condition key |
Dependent action |
|
live:StartLiveMPUTask |
create |
*All Resource
|
None | None |
Parameter permintaan
|
Parameter |
Type |
Required |
Description |
Example |
| AppId |
string |
Yes |
ID aplikasi. Anda hanya dapat menentukan satu ID aplikasi. ID ini dapat memiliki panjang hingga 64 karakter dan boleh berisi huruf, angka, garis bawah (_), dan tanda hubung (-). |
yourAppId |
| ChannelId |
string |
Yes |
ID saluran. Anda hanya dapat menentukan satu ID saluran. ID ini dapat memiliki panjang hingga 64 karakter dan boleh berisi huruf, angka, garis bawah (_), dan tanda hubung (-). |
yourChannelId |
| TaskId |
string |
Yes |
ID tugas. Anda hanya dapat menentukan satu ID tugas. ID ini dapat memiliki panjang hingga 55 karakter dan boleh berisi huruf, angka, garis bawah (_), dan tanda hubung (-). ID harus unik. |
yourTaskId |
| MixMode |
string |
Yes |
Mode pencampuran aliran. Nilai yang valid:
|
0 |
| StreamURL |
string |
No |
URL ingest. Anda hanya dapat menentukan satu URL ingest dalam format Real-Time Messaging Protocol (RTMP). URL ini dapat memiliki panjang hingga 2.048 karakter. Untuk informasi tentang aturan pembuatan URL ingest, lihat Ingest and streaming URLs. Catatan
|
rtmp://example.com/live/stream |
| MultiStreamURL |
array<object> |
No |
Beberapa URL ingest untuk direlay. Parameter ini memungkinkan Anda menentukan beberapa URL ingest. Catatan
Parameter StreamURL dan MultiStreamURL saling eksklusif. Anda harus menentukan salah satu dari dua parameter tersebut. |
|
|
object |
No |
|||
| URL |
string |
No |
URL ingest. Hanya format RTMP yang didukung. URL ini dapat memiliki panjang hingga 2.048 karakter. Untuk informasi tentang aturan pembuatan URL ingest, lihat Ingest and streaming URLs. |
rtmp://example.com/live/stream**** |
| IsAliCdn |
boolean |
No |
Menentukan apakah relay aliran dilakukan menggunakan Alibaba Cloud CDN. Nilai yang valid:
Catatan
Nilai default parameter ini adalah false. |
false |
| Region |
string |
No |
Wilayah tempat aliran dicampur. Nilai yang valid:
|
CN-Shanghai |
| MaxIdleTime |
string |
No |
Periode timeout koneksi idle. Satuan: detik. Nilai yang valid: [10,86400]. Catatan
Jika tugas idle lebih lama dari durasi yang ditentukan oleh parameter MaxIdleTime, tugas akan dihentikan secara otomatis. Jika parameter ini tidak ditentukan, tugas akan dihentikan setelah saluran ditutup. |
10 |
| SingleSubParams |
object |
No |
Parameter relay aliran tunggal. Parameter ini wajib jika Anda mengatur MixMode ke 0. Biarkan parameter ini kosong dalam mode relay aliran campuran. |
|
| SourceType |
string |
No |
Jenis sumber video. Parameter ini hanya berlaku jika Anda mengatur StreamType ke 2. Nilai yang valid:
|
camera |
| StreamType |
string |
No |
Jenis aliran yang ingin Anda relay. Nilai yang valid:
|
0 |
| UserId |
string |
Yes |
ID pengguna. Dalam mode relay aliran tunggal, Anda hanya dapat merelay satu aliran dalam satu permintaan. |
yourSubUserId |
| TranscodeParams |
object |
No |
Parameter relay aliran campuran. Parameter ini wajib jika Anda mengatur MixMode ke 1. Biarkan parameter ini kosong jika Anda menggunakan mode relay aliran tunggal. |
|
| Background |
object |
No |
Citra latar belakang global. |
|
| RenderMode |
string |
No |
Mode tampilan citra latar belakang global. Nilai yang valid:
|
1 |
| URL |
string |
No |
URL citra latar belakang global. URL ini dapat memiliki panjang hingga 2.048 karakter. |
yourImageUrl |
| EncodeParams |
object |
No |
Parameter encoding untuk aliran output. |
|
| AudioOnly |
string |
No |
Menentukan apakah aliran output hanya berupa aliran audio. Nilai yang valid:
|
false |
| AudioBitrate |
string |
No |
Bitrate audio. Nilai yang valid: [8,500]. Satuan: Kbit/s. |
128 |
| AudioChannels |
string |
No |
Jumlah saluran suara. Nilai yang valid: 1 dan 2. |
2 |
| AudioSampleRate |
string |
No |
Laju pengambilan sampel audio. Nilai yang valid: 8000, 16000, 32000, 44100, dan 48000. Satuan: Hz. |
44100 |
| VideoCodec |
string |
No |
Kodek video. Nilai yang valid:
|
H.264 |
| VideoBitrate |
string |
No |
Bitrate video. Nilai yang valid: [1,10000]. Satuan: Kbit/s. |
3500 |
| VideoFramerate |
string |
No |
Laju frame video. Nilai yang valid: [1,60]. Satuan: frame per detik (FPS). |
25 |
| VideoGop |
string |
No |
Ukuran group of pictures (GOP) video. Nilai yang valid: [1,60]. |
20 |
| VideoHeight |
string |
No |
Tinggi video. Nilai yang valid: [0,1920]. Satuan: piksel. |
1000 |
| VideoWidth |
string |
No |
Lebar video. Nilai yang valid: [0,1920]. Satuan: piksel. |
1920 |
| EnhancedParam |
string |
No |
Parameter yang digunakan untuk peningkatan encoding, berupa string JSON. Parameter ini mencakup bidang opsional profile dan preset.
Catatan
Nilai superfast untuk bidang preset cocok untuk skenario komunikasi real-time. Kami menyarankan agar Anda tidak mengatur bidang ini jika Anda bukan insinyur encoding profesional. |
{"profile": "high", "preset": "veryfast"} |
| Layout |
object |
No |
Informasi tata letak video. Catatan
Jika diperlukan transkoding video, Anda harus menentukan informasi tata letak video, termasuk koordinat x dan y, lebar dan tinggi, serta layer. Untuk transkoding hanya audio, biarkan informasi tata letak video kosong. |
|
| UserPanes |
array<object> |
No |
Informasi tentang panel-panel. |
|
|
array<object> |
No |
Informasi tentang panel. |
||
| UserInfo |
object |
No |
Informasi tentang pengguna yang alirannya diputar di panel. Jika Anda membiarkan parameter ini kosong, sistem akan secara otomatis mengatur parameter ini berdasarkan urutan streamer bergabung ke saluran. Catatan
|
|
| SourceType |
string |
No |
Jenis sumber video. Parameter ini hanya berlaku jika Anda mengatur StreamType ke 2. Nilai yang valid:
|
camera |
| ChannelId |
string |
No |
ID saluran tempat pengguna berada. Jika pengguna berada di saluran yang sama, Anda dapat membiarkan parameter ini kosong. Kami menyarankan agar Anda menentukan parameter ini saat melakukan pencampuran aliran lintas saluran. |
yourChannelId |
| UserId |
string |
No |
ID pengguna. |
yourSubUserId |
| Height |
string |
No |
Tinggi panel. Nilainya dinormalisasi. |
0.2632 |
| Width |
string |
No |
Lebar panel. Nilainya dinormalisasi. |
0.3564 |
| X |
string |
No |
Koordinat x panel. Nilainya dinormalisasi. |
0.2456 |
| Y |
string |
No |
Koordinat y panel. Nilainya dinormalisasi. |
0.3789 |
| ZOrder |
string |
No |
Layer tempat panel berada. Nilai 0 menunjukkan layer paling bawah. Setiap kenaikan nilai sebesar 1 menunjukkan layer di atasnya. |
0 |
| BackgroundImageUrl |
string |
No |
URL citra latar belakang panel. URL ini dapat memiliki panjang hingga 2.048 karakter. Citra ini ditampilkan jika pengguna mematikan kamera atau tidak hadir di saluran. |
yourImageUrl |
| RenderMode |
string |
No |
Mode tampilan panel. Nilai yang valid:
|
1 |
| UserInfos |
array<object> |
No |
Informasi tentang pengguna yang alirannya berlangganan. Jika Anda membiarkan parameter ini kosong, aliran dari semua pengguna akan dicampur. |
|
|
object |
No |
Informasi tentang pengguna. |
||
| SourceType |
string |
No |
Jenis sumber video yang berlangganan. Parameter ini hanya berlaku jika Anda mengatur StreamType ke 2. Nilai yang valid:
|
camera |
| StreamType |
string |
No |
Jenis aliran relay yang berlangganan. Nilai yang valid:
|
0 |
| ChannelId |
string |
No |
ID saluran tempat pengguna yang berlangganan berada. Jika pengguna berada di saluran yang sama, Anda dapat membiarkan parameter ini kosong. Kami menyarankan agar Anda menentukan parameter ini saat melakukan pencampuran aliran lintas saluran. |
yourChannelId |
| UserId |
string |
Yes |
ID pengguna yang berlangganan. |
yourSubUserId |
| SeiParams |
object |
No |
Parameter supplemental enhancement information (SEI). |
|
| LayoutVolume |
object |
No |
SEI tata letak dan volume. Jika Anda membiarkan parameter ini kosong, SEI tata letak dan volume default akan digunakan. |
|
| FollowIdr |
string |
No |
Menentukan apakah SEI disertakan dalam frame Instantaneous Decoder Refresh (IDR). Nilai yang valid:
|
0 |
| Interval |
string |
No |
Interval pengiriman SEI. Nilai yang valid: [1000,5000]. Satuan: milidetik. |
1000 |
| PassThrough |
object |
No |
Menentukan apakah SEI dilewatkan (pass-through). |
|
| FollowIdr |
string |
No |
Menentukan apakah SEI disertakan dalam frame IDR. Nilai yang valid:
|
0 |
| Interval |
string |
No |
Interval pengiriman SEI. Nilai yang valid: [1000,5000]. Satuan: milidetik. |
1000 |
| PayloadContent |
string |
No |
Konten muatan SEI. |
yourPayloadContent |
| PayloadContentKey |
string |
No |
Kunci konten muatan SEI. Jika Anda tidak menentukan parameter ini, nilai default udd akan digunakan. |
yourPayloadContentKey |
| PayloadType |
string |
No |
payload_type kustom SEI. Nilai yang valid: 100 hingga 254. Jika Anda tidak menentukan parameter ini, nilai default 5 akan digunakan. |
100 |
SEI Tata Letak dan Volume
| Parameter | Deskripsi |
| canvas | Informasi tentang kanvas. Bidang-bidang berikut disertakan:- w: lebar kanvas. Satuan: piksel.- h: tinggi kanvas. Satuan: piksel.- bgnd: warna latar belakang kanvas, berupa nilai RGB dalam format integer heksadesimal. |
| stream | Informasi tentang aliran video. Bidang-bidang berikut disertakan:- uid: ID pengguna streamer.- paneid: nomor urut panel pada kanvas. Nilai yang valid: [0,8].- zorder: layer panel. Nilai yang valid: [0,99].- x: koordinat x panel pada kanvas. Nilainya dinormalisasi.- y: koordinat y panel pada kanvas. Nilainya dinormalisasi.- w: lebar panel. Nilainya dinormalisasi.- h: tinggi panel. Nilainya dinormalisasi.- type: sumber aliran video di panel. Nilai yang valid: 0 (kamera) dan 1 (berbagi layar).- status: status aliran video di panel. Nilai yang valid: 0 (tidak ditarik) dan 1 (ditarik).- muted: status bisu streamer. Nilai yang valid: 0 (tidak dibisukan) dan 1 (dibisukan). Misalnya, ketika dua streamer (Streamer A dan Streamer B) bertanding, jika Streamer A membisukan Streamer B, bidang muted untuk Streamer B bernilai 1.- vol: volume streamer. Nilai yang valid: [0,255]. Satuan: dB.- vad: mendeteksi suara manusia. Nilai yang valid: [0,150]. 150 menunjukkan bahwa suara manusia terdeteksi dan nilai selain 150 menunjukkan periode waktu selama volume suara manusia menurun hingga 0. |
| ts | Timestamp sistem operasi saat SEI dihasilkan. Satuan: milidetik. |
| ver | Versi SEI. Misalnya, versi saat ini adalah 1.0.0.20220915. |
| udd | Event berbasis skenario kustom yang dikirim menggunakan parameter PassThrough. Konten event ditentukan oleh parameter PayloadContent. |
Catatan Data streaming dari aliran relay berisi SEI, yang dapat digunakan untuk menyampaikan informasi kustom. SEI dapat diekstraksi dari data frame video selama decoding. Untuk informasi tentang format SEI, lihat deskripsi parameter PassThrough di bagian Parameter Permintaan.
Contoh berikut menunjukkan skenario co-streaming:
Jika satu streamer melakukan streaming, pesan SEI yang diterima pemirsa hanya berisi informasi tentang satu peserta. Jika terjadi co-streaming atau battle, pesan SEI yang diterima pemirsa berisi informasi tentang beberapa peserta. Misalnya, ketika streamer dengan ID pengguna 111 melakukan streaming, frame SEI dalam format berikut dikirim ke sisi pemirsa:
{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"111","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} Ketika streamer dengan ID pengguna 111 melakukan co-streaming dengan co-streamer yang memiliki ID pengguna 222, frame SEI dalam format berikut dikirim ke sisi pemirsa:
{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"111","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":"222","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} Pemirsa dapat menentukan apakah tata letak streaming berubah berdasarkan jumlah elemen dalam array stream. Jika hanya ada satu elemen dalam array stream, berarti hanya satu streamer yang melakukan streaming. Jika terdapat lebih dari satu elemen dalam array stream, berarti sedang terjadi co-streaming atau battle. Informasi tata letak peserta menunjukkan posisi masing-masing peserta dalam aliran campuran.
Pass-through SEI
Untuk mengonfigurasi SEI kustom, panggil operasi StartLiveMPUTask untuk memulai tugas relay aliran campuran dan tentukan parameter PayloadContent di bawah parameter PassThrough, atau panggil operasi UpdateLiveMPUTask untuk memperbarui tugas relay aliran campuran dan tentukan parameter PayloadContent di bawah parameter PassThrough.
SEI kustom dapat dikirim secara berkala. Anda dapat menggunakan parameter Interval di bawah parameter PassThrough untuk menentukan interval dalam milidetik.
- SEI kustom juga dapat dikirim bersama keyframe dengan menentukan parameter FollowIdr di bawah parameter PassThrough.
Anda dapat mengonfigurasi pengiriman SEI kustom secara berkala dan mengirim SEI kustom bersama keyframe secara bersamaan. Misalnya, Anda dapat mengatur parameter Interval ke 1000 dan parameter FollowIdr ke 1 untuk mengirim SEI kustom setiap 1.000 milidetik dan menyertakan SEI kustom dalam keyframe.
Jika Anda tidak menentukan parameter Interval dan parameter FollowIdr, SEI kustom hanya dikirim sekali saat Anda memanggil operasi tersebut.
Misalnya, streamer dengan ID pengguna 111 mengingest aliran dan memanggil operasi UpdateLiveMPUTask untuk menentukan SEI berkala. Dalam operasi tersebut, parameter Interval diatur ke 1000, parameter FollowIdr diatur ke 0, dan parameter PayloadContent diatur ke "hello world". Dalam kasus ini, SEI kustom dikirim setiap 1.000 milidetik. Frame SEI yang diterima di sisi pemirsa dalam format berikut:
{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"111","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"}
Relay aliran campuran lintas saluran
Jika Anda ingin mencampur aliran dari beberapa streamer di beberapa saluran dan merelay aliran campuran tersebut ke ApsaraVideo Live, Anda harus menentukan ID pengguna dan ID saluran streamer yang memulai panggilan lintas saluran serta ID pengguna streamer lainnya sebagai parameter input untuk membuat tugas relay aliran campuran. Contoh: Dalam skenario battle, Streamer A di Saluran A memulai battle lintas saluran dengan Streamer B di Saluran B menggunakan antarmuka klien dan merelay aliran campuran tersebut kepada pemirsa di Saluran A. Dalam contoh ini, parameter berikut ditentukan:
ChannelID: channelA
UserId di bawah UserInfos: userA dan userB
Catatan Untuk membuat tugas relay aliran campuran lintas saluran, pastikan panggilan lintas saluran telah dimulai menggunakan SDK di sisi klien. Jika pengguna di saluran berbeda tidak saling melakukan panggilan, Anda tidak dapat membuat tugas relay aliran campuran lintas saluran. Untuk informasi lebih lanjut tentang cara memulai panggilan lintas saluran, lihat Cross-channel subscription.
Elemen respons
|
Element |
Type |
Description |
Example |
|
object |
|||
| 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 | |
| 500 | InternalError | InternalError | |
| 403 | OperationDenied | Your account has not enabled the Live service | |
| 403 | Forbidden | %s | |
| 404 | MissingParam | %s |
Lihat Error Codes untuk daftar lengkap.
Catatan rilis
Lihat Release Notes untuk daftar lengkap.