混合ストリームリレータスクを作成します。
操作説明
デフォルトでは、1 つのアプリケーションに対して最大 200 のシングルストリームリレータスクと最大 40 の混合ストリームリレータスクを作成できます。クォータを増やすには、チケットを送信してください。
ストリームリレータスクのライフサイクル
開始
-
StartLiveMPUTask 操作を呼び出してタスクを作成します。
ユーザーがチャネルに参加しない場合、チャネルが存在しないことを示すエラーが返されます。
ストリームが取り込まれない場合、ストリームリレーは実行されません。この場合、再生に利用できるリレーされたストリームはありません。
タスクが混合ストリームリレーモードの場合、再生用にリレーできるストリームを少なくとも 1 人のユーザーが取り込んでいることを確認してください。ストリームを取り込んでいないユーザーのペインには黒い画面が表示されます。
-
ビジネスサーバーでタスクステータス、タスクモード、およびタスクパラメーターを記録することを推奨します。
タスクステータス:開始または停止。
タスクモード:シングルストリームリレーまたは混合ストリームリレー。
タスクパラメーター:最新の入力パラメーター。たとえば、UpdateLiveMPUTask 操作の呼び出しが成功した後、最新のタスクパラメーターを記録します。
-
共同ストリーミングやバトルシナリオでは、タスクは混合ストリームリレーモードになります。ストリーマーが例外によりチャネルから退出して再度チャネルに参加した場合、ビジネスサーバーで StartLiveMPUTask 操作を直接呼び出して、記録されたタスクパラメーターに基づいてストリームリレーを開始できます。
タスクがシステムによって自動的にクリアされていない場合、タスクは直接開始されます。
タスクがシステムによって自動的にクリアされていない場合、「タスクは既に存在します」というメッセージが返されます。
終了
ストリーマーがチャネルから退出した後、StopLiveMPUTask 操作を呼び出してタスクを停止する必要があります。
タスクで指定されたすべてのユーザーがチャネルから退出しても、StopLiveMPUTask 操作を呼び出さない場合、システムは 2 分後にタスクを停止します。
QPS 制限
1 アカウントあたり、毎秒最大 500 回この操作を呼び出すことができます。この制限を超えたリクエストはドロップされ、サービス中断が発生します。この操作を呼び出す際は、この制限に注意することを推奨します。
今すぐお試しください
テスト
RAM 認証
|
アクション |
アクセスレベル |
リソースタイプ |
条件キー |
依存アクション |
|
live:StartLiveMPUTask |
create |
*All Resource
|
なし | なし |
リクエストパラメーター
|
パラメーター |
型 |
必須 / 任意 |
説明 |
例 |
| AppId |
string |
必須 |
アプリケーション ID。指定できるアプリケーション ID は 1 つだけです。ID は最大 64 文字で、文字、数字、アンダースコア (_)、ハイフン (-) を使用できます。 |
yourAppId |
| ChannelId |
string |
必須 |
チャネル ID。指定できるチャネル ID は 1 つだけです。ID は最大 64 文字で、文字、数字、アンダースコア (_)、ハイフン (-) を使用できます。 |
yourChannelId |
| TaskId |
string |
必須 |
タスク ID。指定できるタスク ID は 1 つだけです。ID は最大 55 文字で、文字、数字、アンダースコア (_)、ハイフン (-) を使用できます。ID は一意である必要があります。 |
yourTaskId |
| MixMode |
string |
必須 |
ストリームミキシングモード。有効な値:
|
0 |
| StreamURL |
string |
任意 |
アップストリーミング URL。リアルタイムメッセージングプロトコル (RTMP) 形式で指定できるアップストリーミング URL は 1 つだけです。URL は最大 2,048 文字です。アップストリーミング URL の生成ルールについては、「アップストリーミング URL とストリーミング URL」をご参照ください。 説明
|
rtmp://example.com/live/stream |
| MultiStreamURL |
array<object> |
任意 |
リレーする複数のアップストリーミング URL。このパラメーターを使用すると、複数のアップストリーミング URL を指定できます。 説明
StreamURL パラメーターと MultiStreamURL パラメーターは相互排他的です。2 つのパラメーターのいずれかを指定する必要があります。 |
|
|
object |
任意 |
|||
| URL |
string |
任意 |
アップストリーミング URL。RTMP 形式のみがサポートされています。URL は最大 2,048 文字です。アップストリーミング URL の生成ルールについては、「アップストリーミング URL とストリーミング URL」をご参照ください。 |
rtmp://example.com/live/stream**** |
| IsAliCdn |
boolean |
任意 |
Alibaba Cloud CDN を使用してストリームリレーを実行するかどうかを指定します。有効な値:
説明
このパラメーターのデフォルト値は false です。 |
false |
| Region |
string |
任意 |
ストリームが混合されるリージョン。有効な値:
|
CN-Shanghai |
| MaxIdleTime |
string |
任意 |
アイドル接続のタイムアウト期間。単位:秒。有効な値の範囲:[10,86400]。 説明
タスクが MaxIdleTime パラメーターで指定された期間より長くアイドル状態である場合、タスクは自動的に停止します。パラメーターが指定されていない場合、タスクはチャネルが閉じられた後に停止します。 |
10 |
| SingleSubParams |
object |
任意 |
シングルストリームリレーパラメーター。これらのパラメーターは、MixMode を 0 に設定した場合に必要です。混合ストリームリレーモードでは、これらのパラメーターを空のままにします。 |
|
| SourceType |
string |
任意 |
ビデオソースのタイプ。このパラメーターは、StreamType を 2 に設定した場合にのみ有効です。有効な値:
|
camera |
| StreamType |
string |
任意 |
リレーするストリームのタイプ。有効な値:
|
0 |
| UserId |
string |
必須 |
ユーザー ID。シングルストリームリレーモードでは、1 つのリクエストで 1 つのストリームのみをリレーできます。 |
yourSubUserId |
| TranscodeParams |
object |
任意 |
混合ストリームリレーパラメーター。これらのパラメーターは、MixMode を 1 に設定した場合に必要です。シングルストリームリレーモードを使用する場合は、これらのパラメーターを空のままにします。 |
|
| Background |
object |
任意 |
グローバル背景画像。 |
|
| RenderMode |
string |
任意 |
グローバル背景画像の表示モード。有効な値:
|
1 |
| URL |
string |
任意 |
グローバル背景画像の URL。URL は最大 2,048 文字です。 |
yourImageUrl |
| EncodeParams |
object |
任意 |
出力ストリームのエンコーディングパラメーター。 |
|
| AudioOnly |
string |
任意 |
出力ストリームがオーディオのみのストリームであるかどうかを指定します。有効な値:
|
false |
| AudioBitrate |
string |
任意 |
オーディオのビットレート。有効な値の範囲:[8,500]。単位:Kbit/s。 |
128 |
| AudioChannels |
string |
任意 |
サウンドチャンネルの数。有効な値:1 および 2。 |
2 |
| AudioSampleRate |
string |
任意 |
音声サンプリングレート。有効な値:8000、16000、32000、44100、および 48000。単位:Hz。 |
44100 |
| VideoCodec |
string |
任意 |
ビデオコーデック。有効な値:
|
H.264 |
| VideoBitrate |
string |
任意 |
ビデオのビットレート。有効な値の範囲:[1,10000]。単位:Kbit/s。 |
3500 |
| VideoFramerate |
string |
任意 |
ビデオのフレームレート。有効な値の範囲:[1,60]。単位:フレーム/秒 (FPS)。 |
25 |
| VideoGop |
string |
任意 |
ビデオの GOP (Group of Pictures) サイズ。有効な値の範囲:[1,60]。 |
20 |
| VideoHeight |
string |
任意 |
ビデオの高さ。有効な値の範囲:[0,1920]。単位:ピクセル。 |
1000 |
| VideoWidth |
string |
任意 |
ビデオの幅。有効な値の範囲:[0,1920]。単位:ピクセル。 |
1920 |
| EnhancedParam |
string |
任意 |
エンコーディング拡張に使用されるパラメーターで、JSON 文字列です。パラメーターには、オプションのプロファイルとプリセットフィールドが含まれます。
説明
preset フィールドの値 superfast は、リアルタイムコミュニケーションシナリオに適しています。プロのエンコーディングエンジニアでない場合は、このフィールドを設定しないことを推奨します。 |
{"profile": "high", "preset": "veryfast"} |
| Layout |
object |
任意 |
ビデオレイアウト情報。 説明
ビデオのトランスコーディングが必要な場合は、x 座標と y 座標、幅と高さ、レイヤーを含むビデオレイアウト情報を指定する必要があります。オーディオのみのトランスコーディングの場合は、ビデオレイアウト情報を空のままにします。 |
|
| UserPanes |
array<object> |
任意 |
ペインに関する情報。 |
|
|
array<object> |
任意 |
ペインに関する情報。 |
||
| UserInfo |
object |
任意 |
ペインでストリームが再生されるユーザーに関する情報。このパラメーターを空のままにすると、システムはストリーマーがチャネルに参加する順序に基づいてこのパラメーターを自動的に設定します。 説明
|
|
| SourceType |
string |
任意 |
ビデオソースのタイプ。このパラメーターは、StreamType を 2 に設定した場合にのみ有効です。有効な値:
|
camera |
| ChannelId |
string |
任意 |
ユーザーがいるチャネルの ID。ユーザーが同じチャネルにいる場合、このパラメーターを空のままにすることができます。チャネル間でストリームミキシングを実行する場合は、このパラメーターを指定することを推奨します。 |
yourChannelId |
| UserId |
string |
任意 |
ユーザー ID。 |
yourSubUserId |
| Height |
string |
任意 |
ペインの高さ。値は正規化されます。 |
0.2632 |
| Width |
string |
任意 |
ペインの幅。値は正規化されます。 |
0.3564 |
| X |
string |
任意 |
ペインの x 座標。値は正規化されます。 |
0.2456 |
| Y |
string |
任意 |
ペインの y 座標。値は正規化されます。 |
0.3789 |
| ZOrder |
string |
任意 |
ペインが存在するレイヤー。値 0 は最下層を示します。値が 1 増えるごとに、次の上位レイヤーを示します。 |
0 |
| BackgroundImageUrl |
string |
任意 |
ペインの背景画像の URL。URL は最大 2,048 文字です。この画像は、ユーザーがカメラをオフにした場合やチャネルにいない場合に表示されます。 |
yourImageUrl |
| RenderMode |
string |
任意 |
ペインの表示モード。有効な値:
|
1 |
| UserInfos |
array<object> |
任意 |
ストリームがサブスクライブされているユーザーに関する情報。このパラメーターを空のままにすると、すべてのユーザーからのストリームが混合されます。 |
|
|
object |
任意 |
ユーザーに関する情報。 |
||
| SourceType |
string |
任意 |
サブスクライブされているビデオソースのタイプ。このパラメーターは、StreamType を 2 に設定した場合にのみ有効です。有効な値:
|
camera |
| StreamType |
string |
任意 |
サブスクライブされているリレーされたストリームのタイプ。有効な値:
|
0 |
| ChannelId |
string |
任意 |
サブスクライブされているユーザーがいるチャネルの ID。ユーザーが同じチャネルにいる場合、このパラメーターを空のままにすることができます。チャネル間でストリームミキシングを実行する場合は、このパラメーターを指定することを推奨します。 |
yourChannelId |
| UserId |
string |
必須 |
サブスクライブされているユーザーの ID。 |
yourSubUserId |
| SeiParams |
object |
任意 |
補足的な拡張情報 (SEI) パラメーター。 |
|
| LayoutVolume |
object |
任意 |
レイアウトとボリュームの SEI。このパラメーターを空のままにすると、デフォルトのレイアウトとボリュームの SEI が使用されます。 |
|
| FollowIdr |
string |
任意 |
Instantaneous Decoder Refresh (IDR) フレームに SEI を含めるかどうかを指定します。有効な値:
|
0 |
| Interval |
string |
任意 |
SEI が送信される間隔。有効な値の範囲:[1000,5000]。単位:ミリ秒。 |
1000 |
| PassThrough |
object |
任意 |
SEI をパススルーするかどうかを指定します。 |
|
| FollowIdr |
string |
任意 |
IDR フレームに SEI を含めるかどうかを指定します。有効な値:
|
0 |
| Interval |
string |
任意 |
SEI が送信される間隔。有効な値の範囲:[1000,5000]。単位:ミリ秒。 |
1000 |
| PayloadContent |
string |
任意 |
SEI のペイロードコンテンツ。 |
yourPayloadContent |
| PayloadContentKey |
string |
任意 |
SEI のペイロードコンテンツのキー。このパラメーターを指定しない場合、デフォルト値の udd が使用されます。 |
yourPayloadContentKey |
| PayloadType |
string |
任意 |
SEI のカスタム payload_type。有効な値の範囲:100~254。このパラメーターを指定しない場合、デフォルト値の 5 が使用されます。 |
100 |
レイアウトとボリュームの SEI
| パラメーター | 説明 |
| canvas | キャンバスに関する情報。次のフィールドが含まれます:- w:キャンバスの幅。単位:ピクセル。- h:キャンバスの高さ。単位:ピクセル。- bgnd:キャンバスの背景色。16 進整数の形式の RGB 値です。 |
| stream | ビデオストリームに関する情報。次のフィールドが含まれます:- uid:ストリーマーのユーザー ID。- paneid:キャンバス上のペインのシーケンス番号。有効な値の範囲:[0,8]。- zorder:ペインのレイヤー。有効な値の範囲:[0,99]。- x:キャンバス上のペインの x 座標。値は正規化されます。- y:キャンバス上のペインの y 座標。値は正規化されます。- w:ペインの幅。値は正規化されます。- h:ペインの高さ。値は正規化されます。- type:ペイン内のビデオストリームのソース。有効な値:0 (カメラ) および 1 (画面共有)。- status:ペイン内のビデオストリームのステータス。有効な値:0 (プルされていない) および 1 (プルされた)。- muted:ストリーマーのミュートステータス。有効な値:0 (ミュートされていない) および 1 (ミュートされた)。たとえば、2 人のストリーマー (ストリーマー A とストリーマー B) がバトルしている場合、ストリーマー A がストリーマー B をミュートすると、ストリーマー B に表示される muted フィールドは 1 になります。- vol:ストリーマーのボリューム。有効な値の範囲:[0,255]。単位:dB。- vad:人間の音声を検出します。有効な値の範囲:[0,150]。150 は人間の音声が検出されたことを示し、150 以外の値は人間の音声のボリュームが 0 に減少するまでの時間を示します。 |
| ts | SEI が生成されたときのオペレーティングシステムのタイムスタンプ。単位:ミリ秒。 |
| ver | SEI のバージョン。たとえば、現在のバージョンは 1.0.0.20220915 です。 |
| udd | PassThrough パラメーターを使用して送信されるカスタムシナリオベースのイベント。イベントのコンテンツは PayloadContent パラメーターで指定されます。 |
注 リレーされたストリームのストリーミングデータには SEI が含まれており、カスタム情報を伝達するために使用できます。SEI は、デコード中にビデオフレームデータから抽出できます。SEI 形式については、「リクエストパラメーター」セクションの PassThrough パラメーターの説明をご参照ください。
次の例は、共同ストリーミングシナリオを示しています:
単一のストリーマーがストリーミングしている場合、視聴者が受信する SEI メッセージには 1 人の参加者の情報のみが含まれます。共同ストリーミングまたはバトルが発生した場合、視聴者が受信する SEI メッセージには複数の参加者の情報が含まれます。たとえば、ユーザー ID が 111 のストリーマーがストリーミングしている場合、次の形式の SEI フレームが視聴者側に送信されます:
{"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} ユーザー ID が 111 のストリーマーがユーザー ID が 222 の共同ストリーマーと共同ストリーミングしている場合、次の形式の SEI フレームが視聴者側に送信されます:
{"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} 視聴者は、ストリーム配列の数に基づいてストリーミングレイアウトが変更されたかどうかを判断できます。ストリーム配列が 1 つしか存在しない場合、単一のストリーマーがストリーミングしています。複数のストリーム配列が存在する場合、共同ストリーミングまたはバトルが進行中です。参加者のレイアウト情報は、混合ストリーム内の各参加者の位置を示すことができます。
SEI パススルー
カスタム SEI を設定するには、StartLiveMPUTask 操作を呼び出して混合ストリームリレータスクを開始し、PassThrough パラメーターの下で PayloadContent パラメーターを指定するか、UpdateLiveMPUTask 操作を呼び出して混合ストリームリレータスクを更新し、PassThrough パラメーターの下で PayloadContent パラメーターを指定します。
カスタム SEI は定期的に送信できます。PassThrough パラメーターの下の Interval パラメーターを使用して、ミリ秒単位で間隔を指定できます。
- カスタム SEI は、PassThrough パラメーターの下の FollowIdr パラメーターを指定することで、キーフレームと共に送信することもできます。
カスタム SEI を定期的に送信し、同時にキーフレームと共にカスタム SEI を送信するように設定を構成できます。たとえば、Interval パラメーターを 1000 に、FollowIdr パラメーターを 1 に設定して、カスタム SEI を 1,000 ミリ秒ごとに送信し、キーフレームにカスタム SEI を含めることができます。
Interval パラメーターと FollowIdr パラメーターを指定しない場合、カスタム SEI は操作を呼び出したときに 1 回だけ送信されます。
たとえば、ユーザー ID が 111 のストリーマーがストリームを取り込み、UpdateLiveMPUTask 操作を呼び出して定期的な SEI を指定します。この操作では、Interval パラメーターは 1000 に、FollowIdr パラメーターは 0 に、PayloadContent パラメーターは "hello world" に設定されます。この場合、カスタム SEI は 1,000 ミリ秒ごとに送信されます。視聴者側で受信される SEI フレームは次の形式です:
{"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"}
チャネル間の混合ストリームリレー
複数のチャネルにまたがる複数のストリーマーからのストリームを混合し、混合ストリームを ApsaraVideo Live にリレーする場合は、チャネル間通話を開始したストリーマーのユーザー ID とチャネル ID、および他のストリーマーのユーザー ID を入力パラメーターとして指定して、混合ストリームリレータスクを作成する必要があります。例:バトルシナリオでは、チャネル A のストリーマー A がクライアントインターフェイスを使用してチャネル B のストリーマー B とのチャネル間バトルを開始し、混合ストリームをチャネル A の視聴者にリレーします。この例では、次のパラメーターが指定されます:
ChannelID:channelA
UserInfos の下の UserId:userA および userB
注 チャネル間の混合ストリームリレータスクを作成するには、クライアント側で SDK を使用してチャネル間通話が開始されていることを確認してください。異なるチャネルのユーザーが互いに通話していない場合、チャネル間の混合ストリームリレータスクを作成することはできません。チャネル間通話を開始する方法の詳細については、「チャネル間サブスクリプション」をご参照ください。
レスポンスフィールド
|
フィールド |
型 |
説明 |
例 |
|
object |
|||
| RequestId |
string |
リクエスト ID。 |
0F72851F-5DC1-1979-9B2C-450040316C3E |
例
成功レスポンス
JSONJSON
{
"RequestId": "0F72851F-5DC1-1979-9B2C-450040316C3E"
}
エラーコード
|
HTTP ステータスコード |
エラーコード |
エラーメッセージ |
説明 |
|---|---|---|---|
| 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 |
完全なリストについては、「エラーコード」をご参照ください。
変更履歴
完全なリストについては、「変更履歴」をご参照ください。