混合ストリームとトランスコードのタスクを作成します。
操作説明
デフォルトでは、各アプリケーション ID は最大 200 の単一ストリームのアップストリーミングタスクと 40 の混合ストリームとトランスコードのタスクをサポートします。クォータを増やすには、チケットを送信してください。
混合ストリームタスクのライフサイクル
開始
-
ストリーマーが初めてストリーミングを開始するときに、StartLiveMPUTask を呼び出してバイパスタスクを開始できます。
チャンネルにユーザーがいない場合、「channel does not exist」というエラーが返されます。
バイパスストリームは、ユーザーがアップストリーミングを開始した場合にのみ出力されます。単一ストリームタスクのユーザーがストリームをアップストリームしない場合、バイパスストリームは再生できません。
混合ストリームタスクの場合、バイパスストリームを再生可能にするには、少なくとも 1 人のユーザーがストリームをアップストリームしている必要があります。ストリームをアップストリームしていないユーザーのレイアウトエリアは黒い画面で表示されます。
-
ご利用のビジネスサーバーで、バイパスタスクのステータス、タスクタイプ、およびタスクパラメーターを記録できます。
タスクステータス:開始、停止。
タスクタイプ:単一ストリーム、混合ストリーム。
タスクパラメーター:最新の入力パラメーター。たとえば、UpdateLiveMPUTask の呼び出しが成功した後、最新のタスクパラメーターを記録します。
-
共同ストリーミングまたは PK シナリオで、タスクが混合ストリームタスクに更新された後、ストリーマーが予期せずチャンネルから退出してから再参加した場合、ご利用のビジネスサーバーは StartLiveMPUTask を呼び出して、保存されたタスクタイプとパラメーターに基づいて混合ストリームタスクを再開できます。
タスクを開始する前にシステムがタスクを自動的にクリアしていない場合、タスクは正常に開始されます。
システムがまだタスクをクリアしていない場合、Task already exists エラーコードが返されます。
終了
ストリーマーがチャンネルから退出するときは、StopLiveMPUTask を呼び出してバイパスタスクを停止します。
タスク内のすべてのユーザーがチャンネルから退出しても StopLiveMPUTask が呼び出されない場合、システムは 2 分後に自動的にバイパスタスクを停止します。
QPS 制限
この API の単一ユーザーに対する 1 秒あたりのクエリ数 (QPS) の上限は 500 回/秒です。この上限を超えると、API 呼び出しがスロットリングされます。これはビジネスに影響を与える可能性があります。この API は適切に呼び出すことを推奨します。
今すぐお試しください
テスト
RAM 認証
|
アクション |
アクセスレベル |
リソースタイプ |
条件キー |
依存アクション |
|
live:StartLiveMPUTask |
create |
*All Resource
|
なし | なし |
リクエストパラメーター
|
パラメーター |
型 |
必須 / 任意 |
説明 |
例 |
| AppId |
string |
必須 |
アプリケーション ID。1 つの ID のみがサポートされます。大文字、小文字、数字、アンダースコア (_)、ハイフン (-) を使用できます。最大長は 64 文字です。 |
yourAppId |
| ChannelId |
string |
必須 |
チャンネル ID。1 つの ID のみがサポートされます。大文字、小文字、数字、アンダースコア (_)、ハイフン (-) を使用できます。最大長は 64 文字です。 |
yourChannelId |
| TaskId |
string |
必須 |
タスク ID。1 つの ID のみがサポートされます。大文字、小文字、数字、アンダースコア (_)、ハイフン (-) を使用できます。最大長は 55 文字です。この ID は、バイパスアップストリーミングタスクの一意の識別子です。 新しいタスクを開始する際に、同じ ID のタスクがまだ存在し、クリアされていない場合、`InvalidParam` が返されます。 |
yourTaskId |
| MixMode |
string |
必須 |
混合ストリームモード。有効値:
|
0 |
| StreamURL |
string |
任意 |
ライブアップストリーミング URL。RTMP プロトコルのみがサポートされます。1 つの URL のみがサポートされます。最大長は 2048 文字です。URL の生成方法については、「アップストリーミング URL と再生 URL」をご参照ください。 説明
|
rtmp://example.com/live/stream |
| MultiStreamURL |
array<object> |
任意 |
複数の URL へのアップストリーミングのためのパラメーター。複数のライブアップストリーミング URL を指定できます。 説明
タスクのアップストリーミング URL を設定する際は、StreamURL パラメーターまたは MultiStreamURL パラメーターのいずれかを設定する必要がありますが、両方を設定することはできません。 |
|
|
object |
任意 |
|||
| URL |
string |
任意 |
ライブアップストリーミング URL。RTMP プロトコルのみがサポートされます。最大長は 2048 文字です。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 つのストリームのみをアップストリームできます。 |
yourSubUserId |
| TranscodeParams |
object |
任意 |
混合ストリームとトランスコードのパラメーター。このパラメーターは、MixMode が 1 に設定されている場合に必須です。単一ストリームのアップストリーミングにはこのパラメーターを設定しないでください。 |
|
| Background |
object |
任意 |
混合ストリームのグローバル背景画像。 |
|
| RenderMode |
string |
任意 |
出力ビデオの表示モード。有効値:
|
1 |
| URL |
string |
任意 |
グローバル背景画像の URL。最大長は 2048 文字です。 |
yourImageUrl |
| EncodeParams |
object |
任意 |
出力ストリームのエンコードパラメーター。 |
|
| AudioOnly |
string |
任意 |
ストリームが音声のみであるかどうかを指定します。有効値:
|
false |
| AudioBitrate |
string |
任意 |
音声ビットレート。単位:kbps。値は [8, 500] の範囲内である必要があります。 |
128 |
| AudioChannels |
string |
任意 |
音声チャンネル数。有効値:1、2。 |
2 |
| AudioSampleRate |
string |
任意 |
音声サンプリングレート。単位:Hz。有効値:8000、16000、32000、44100、48000。 |
44100 |
| VideoCodec |
string |
任意 |
ビデオエンコード形式。有効値:
|
H.264 |
| VideoBitrate |
string |
任意 |
ビデオビットレート。単位:kbps。値は [1, 10000] の範囲内である必要があります。 |
3500 |
| VideoFramerate |
string |
任意 |
ビデオフレームレート。単位:fps。値は [1, 60] の範囲内である必要があります。 |
25 |
| VideoGop |
string |
任意 |
ビデオ GOP サイズ。値は [1, 60] の範囲内である必要があります。 |
20 |
| VideoHeight |
string |
任意 |
ビデオの高さ。単位:ピクセル。値は [0, 1920] の範囲内である必要があります。 |
1000 |
| VideoWidth |
string |
任意 |
ビデオの幅。単位:ピクセル。値は [0, 1920] の範囲内である必要があります。 |
1920 |
| EnhancedParam |
string |
任意 |
拡張エンコードパラメーター。これは JSON 文字列です。サポートされているオプションの設定には、`profile` と `preset` が含まれます。
説明
たとえば、"superfast" は主にリアルタイム通信に使用されます。エンコーダーの専門家でない場合は、このオプションを設定しないでください。 |
{"profile": "high", "preset": "veryfast"} |
| Layout |
object |
任意 |
ビデオレイアウト情報。 説明
ビデオトランスコードの場合、座標 (X, Y)、ペインのディメンション (Width, Height)、および重ね順 (ZOrder) を含むビデオレイアウト情報を指定する必要があります。音声のみのトランスコードの場合、ビデオレイアウト情報を指定しないでください。 |
|
| 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 の上にあり、以下同様です。 |
0 |
| BackgroundImageUrl |
string |
任意 |
ビデオペインの背景画像の URL。最大長は 2048 文字です。ユーザーがカメラをオフにした場合、またはチャンネルに参加していない場合、この画像がそのレイアウト位置に表示されます。 |
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 |
任意 |
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 の範囲内である必要があります。設定しない場合、デフォルトの payload_type は 5 です。 |
100 |
レイアウトと音量の SEI
| パラメーター | 説明 |
| canvas | キャンバス情報。パラメーター: - w:キャンバスの幅 (ピクセル)。 - h:キャンバスの高さ (ピクセル)。 - bgnd:キャンバスの背景色 (RGB 形式の 16 進整数)。 |
| stream | ビデオストリーム情報。パラメーター: - uid:ストリーマーのユーザー ID。 - paneid:リージョンのペイン ID ([0, 8] の範囲)。 - zorder:リージョンの重ね順 ([0, 99] の範囲)。 - x:キャンバス上のリージョンの X 座標 (正規化されたパーセンテージ)。 - y:キャンバス上のリージョンの Y 座標 (正規化されたパーセンテージ)。 - w:リージョンの幅 (正規化されたパーセンテージ)。 - h:リージョンの高さ (正規化されたパーセンテージ)。 - type:リージョン内のビデオストリームのタイプ。0:カメラ。1:画面共有。 - status:リージョン内のビデオストリームのステータス。0:まだプルされていない。1:プルされた。 - muted:ストリーマーのミュートステータス。0:ミュートされていない。1:ミュートされている。PK シナリオで、ストリーマー A がストリーマー B をミュートした場合、ストリーマー B の `muted` フィールドにはミュートステータスが表示されます。 - vol:ストリーマーの音量 (デシベル、[0, 255] の範囲)。 - vad:音声アクティビティ検出。値は [0, 150] の範囲です。150 は音声が検出されたことを示します。150 以外の値は、音声から無音へのトレイルオフ時間を示します。 |
| ts | この情報が生成されたときのオペレーティングシステムタイムスタンプ (ミリ秒)。 |
| ver | SEI フォーマットのバージョン (例:1.0.0.20220915)。 |
| udd | `PassThrough` パラメーターを介して送信されるシナリオベースのカスタムイベント。コンテンツは `PayloadContent` パラメーターで指定されます。 |
ユーザーがアップストリームされたストリームをプルすると、ストリーミングメディアデータには SEI 情報が含まれます。この機能を使用してカスタム情報を渡すことができます。SEI 情報は、ビデオストリームのデコード中にビデオフレームデータから取得できます。具体的なフォーマットについては、`PassThrough` パラメーターをご参照ください。
共同ストリーミングシナリオの例:
ストリーマーが 1 人しかいない場合、視聴者が受信する SEI 情報の `stream` コレクションには、1 人のメンバーの情報のみが含まれます。ストリーマーが共同ストリーミングまたは PK セッションに参加している場合、`stream` コレクションには複数のメンバーの情報が含まれます。
たとえば、ストリーマー `streamer111` が単独でストリーミングしている場合、視聴者が受信する SEI フレームフォーマットは次のようになります:{"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}
ストリーマー `streamer111` が視聴者 `viewer222` と共同ストリーミングしている場合、視聴者が受信する SEI フレームフォーマットは次のようになります:{"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}
`stream` 配列の要素数を確認することで、ライブレイアウトが変更されたかどうかを判断できます。`stream` 配列に 1 つの要素がある場合、単一のストリーマーがストリームをアップストリームしています。`stream` 配列に複数の要素がある場合、ストリーマーは共同ストリーミングまたは PK セッションに参加しています。各メンバーのレイアウト情報は、混合ストリームレイアウトにおけるそれぞれの特定の位置を示します。
パススルー SEI
カスタム SEI を使用するには、StartLiveMPUTask コマンドを呼び出して混合ストリームとアップストリーミングタスクを開始し、`PassThrough` パラメーターで `PayloadContent` を指定します。また、UpdateLiveMPUTask コマンドを呼び出してタスクを更新し、`PassThrough` パラメーターで `PayloadContent` を指定することもできます。
カスタム SEI は定期的に送信できます。期間は `PassThrough` の `Interval` パラメーターを使用して設定できます。単位はミリ秒です。
- カスタム SEI はキーフレームと共に送信することもできます。これは `PassThrough` の `FollowIdr` パラメーターを使用して設定できます。
SEI は定期的にもキーフレームと共にも送信できます。たとえば、`Interval:1000` と `FollowIdr: 1` は、カスタム SEI が 1000 ミリ秒ごとに送信され、すべてのキーフレームと共に送信されることを意味します。
`Interval` または `FollowIdr` を設定しない場合、カスタム SEI は API が呼び出されたときに一度だけ送信されます。
たとえば、ストリーマー `streamer111` が単独でストリーミングしている場合、UpdateLiveMPUTask コマンドを呼び出して定期的な SEI を送信できます。`PassThrough` パラメーターで、`Interval` を 1000、`FollowIdr` を 0、`PayloadContent` を "hello world" に設定します。すると、カスタム SEI メッセージが 1000 ミリ秒ごとに送信されます。視聴者が受信する SEI フレームフォーマットは次のようになります:{"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"}
クロスチャンネルの複数ユーザー混合ストリーム
複数のチャンネルにまたがる複数のストリーマーからのストリームを混合し、混合ストリームをライブストリーミングサービスにアップストリームするには、混合ストリームタスクを作成する際に、クロスチャンネルコールを開始したストリーマーの UserID と ChannelID、および他の参加者の UserID を入力パラメーターとして提供する必要があります。次の例をご参照ください: ライブ PK シナリオで、チャンネル `channelA` のストリーマー `userA` が、クライアント API を使用してチャンネル `channelB` のストリーマー `userB` とクロスチャンネル PK を開始します。両方のストリーマーの混合ストリームは、チャンネル `channelA` の視聴者に出力されます。この場合、混合ストリームタスクを作成するためのチャンネルとユーザーのパラメーターは次のように指定されます:
ChannelID:`channelA` を指定します。
UserInfos->UserId:それぞれ `userA` と `userB` を指定します。
クロスチャンネルの複数ユーザー混合ストリームタスクを作成する前に、クライアントソフトウェア開発キット (SDK) を介してクロスチャンネルコールを開始する必要があります。異なるチャンネルのユーザーがコール中でない場合、クロスチャンネルの混合ストリームタスクを作成することはできません。クロスチャンネルコールの開始方法の詳細については、「クロスチャンネルサブスクリプション」をご参照ください。
レスポンスフィールド
|
フィールド |
型 |
説明 |
例 |
|
object |
リクエスト ID。 |
||
| RequestId |
string |
リクエスト ID。 |
0F72851F-5DC1-1979-9B2C-450040316C3E |
例
成功レスポンス
JSONJSON
{
"RequestId": "0F72851F-5DC1-1979-9B2C-450040316C3E"
}
エラーコード
|
HTTP ステータスコード |
エラーコード |
エラーメッセージ |
説明 |
|---|---|---|---|
| 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. |
完全なリストについては、「エラーコード」をご参照ください。
変更履歴
完全なリストについては、「変更履歴」をご参照ください。