ストリームミキシングおよびリレーのイベントサブスクリプションを作成します。
操作説明
ストリームミキシングおよびリレーのイベントサブスクリプションを作成します。サブスクリプションの作成時に、コールバック URL、サブスクライブするアプリケーション、チャンネル情報などのパラメーターを設定できます。
QPS 制限
この操作の単一ユーザー QPS 制限は、1 秒あたり 50 回の呼び出しです。制限を超えると API 呼び出しがスロットリングされ、ビジネスに影響が出る可能性があります。この操作は適切に呼び出してください。
今すぐお試しください
テスト
RAM 認証
|
アクション |
アクセスレベル |
リソースタイプ |
条件キー |
依存アクション |
|
live:CreateRtcMPUEventSub |
create |
*All resources.
|
なし | なし |
リクエストパラメーター
|
パラメーター |
型 |
必須 / 任意 |
説明 |
例 |
| AppId |
string |
必須 |
サブスクライブするアプリケーションの ID です。ApsaraVideo Live > Live+ > ApsaraVideo Real-time Communication > アプリケーション管理 に移動して、アプリケーション ID を確認できます。アプリケーションが存在しない場合は、アプリケーションの作成 をクリックして作成してください。 説明
アプリケーション ID は、大文字と小文字、数字、アンダースコア、ハイフン (-) で構成され、最大 64 文字です。 |
yourAppId |
| ChannelIds |
string |
任意 |
コールバックを受信したいストリームミキシングタスクのチャンネル ID です。複数のチャンネル ID をカンマ (,) で区切って指定できます。 説明
|
yourChannelIds |
| CallbackUrl |
string |
必須 |
コールバック URL です。URL のフォーマットについては、以下のコールバックコンテンツ仕様を参照してください。 説明
コールバック URL のプロトコルは HTTP または HTTPS である必要があります。URL に使用できる文字は、a-z、A-Z、0-9、-、_、?、%、=、#、.、/、+ のみです。URL は 2083 文字を超えることはできません。 |
http://****.com/callback |
コールバックコンテンツの例
コールバックコンテンツは、HTTP/HTTPS POST リクエストとしてビジネスサーバーに送信されます。文字エンコーディングは UTF-8 で、リクエストボディは JSON 構造です。ビジネスサーバーが HTTP ステータスコード 200 で応答すると、コールバックは成功とみなされます。以下はコールバックコンテンツの例です。
ストリームミキシングおよびリレーが正常に機能しているかどうかを判断するには、コールバック通知と、対応する CDN ベンダーが提供するオンライストリームのステータスの両方を使用してください。
{
"EventType": 1,
"MsgId": "42bba8b5-94ab-468c-9dae-9b501dd****",
"AppId": "rtcdev",
"SubId": "Sub-9799B2C45009799B2*****",
"TaskId": "mpucallbacktest",
"CallbackTs": 1712656430476,
"Payload": {
"DstUrl": "rtmp://domain/app/stream?auth",
"EventTs": 1712656430384,
"EventCode": 1,
"ErrorCode": 0,
"ErrorMessage": ""
}
}
コールバック情報
コールバックヘッダーには以下のフィールドが含まれます。
| フィールド | 説明 |
| Content-Type | データタイプ。固定値: application/json |
| Ali-Rtc-Timestamp | タイムスタンプ。 |
| Ali-Rtc-Signature | 署名値。 |
コールバックボディには以下のフィールドが含まれます。
| フィールド | タイプ | 説明 | 例 |
| EventType | Integer | コールバックイベントタイプ。ストリームミキシングおよびリレーのコールバックの場合、値は 1 に固定されます。 | 1 |
| MsgId | String | このコールバックを一意に識別するコールバック ID。 | *****973C-4529-A334***** |
| AppId | String | サブスクライブするアプリケーションの ID。 | yourAppId |
| SubId | String | サブスクリプション ID。 | Sub-******9799B2C4500****** |
| TaskId | String | リレータスク ID。 | yourTaskId |
| CallbackTs | Integer | コールバックリクエストが開始された時点のタイムスタンプ (ミリ秒単位)。 | 1712656430476 |
| Payload | JSON Object | コールバックイベント情報。 | - |
コールバックイベント情報 (Payload)
| フィールド | タイプ | 説明 | 例 |
| DstUrl | String | リレー先の URL。 | rtmp://domain/app/stream?auth |
| EventTs | Integer | コールバックイベントが発生した時点のタイムスタンプ (ミリ秒単位)。 | 1712656430384 |
| EventCode | Integer | コールバックイベントコード。 | 1 |
| ErrorCode | Integer | コールバックイベントのエラーコード。 | 10001 |
| ErrorMessage | String | コールバックイベントのエラーメッセージ。 | rtmp server init failed |
コールバックイベントコード
| フィールド | 値 | 説明 | コールバック頻度 |
| MPU_STATE_PREPARING | 0 | リレータスクが作成され、トリガーされました。 | 1 回のみコールバックされます。 |
| MPU_STATE_ESTABLISHING | 1 | リレータスクが接続を確立中です。 | 5 秒ごとにコールバックされます。 |
| MPU_STATE_RUNNING | 2 | リレータスクが実行中です。 | 1 回のみコールバックされます。 |
| MPU_STATE_RECOVERING | 3 | リレータスクが中断され、復旧中です。 | 5 秒ごとにコールバックされます。 |
| MPU_STATE_TERMINATED | 4 | リレータスクが終了しました。これには、正常な停止、起動失敗、または異常終了が含まれます。具体的な理由は ErrorCode と ErrorMessage で示されます。 | 1 回のみコールバックされます。 |
次の図は、コールバックイベントの状態遷移の例を示しています。
注意:
コールバックメッセージは、ビジネスサーバーに順序不同で到着する場合があります。Payload 内の EventTs に基づいてイベントを並べ替えることができます。コールバックイベントの最新の状態のみが必要な場合は、後から到着する期限切れのイベントを無視してください。
CreateMixStreamRelayTask (new) を呼び出して作成されたストリームミキシングおよびリレータスクの場合、すべてのユーザーがルームから退出してから一定時間後にタスクが自動的に停止し、MPU_STATE_TERMINATED コールバックが送信されます。
コールバック設定は新しいタスクにのみ影響し、既存のタスクには影響しません。
a. コールバック設定が有効になる前に開始されたタスクは、コールバックを送信しません。
b. コールバック設定が有効になった後に開始されたタスクは、コールバックを送信します。
c. コールバック設定が削除される前に開始されたタスクは、タスクが終了するまでコールバックを送信し続けます。
d. コールバック設定が削除された後に開始されたタスクは、コールバックを送信しません。
コールバックエラーコード
リレータスクが終了すると、ErrorCode と ErrorMessage に終了理由が示されます。
| エラーコード | エラーメッセージ | 説明 |
| 0 | タスクは正常に停止しました。 | |
| 10001 | rtmp server init failed | 接続の確立に失敗しました。タスクは異常終了しました。 |
| 10002 | rtmp server internal error | 内部サーバーエラーが発生しました。タスクは異常終了しました。 |
| 10003 | task idle timeout | タスクが長時間アイドル状態だったため終了しました。 |
コールバック認証
コールバックイベント認証はデフォルトで有効になっています。認証ロジックは以下の通りです。
ApsaraVideo Live がコールバックリクエストを開始すると、HTTP(S) リクエストヘッダーに Ali-Rtc-Timestamp および Ali-Rtc-Signature フィールドが含まれ、コールバックメッセージ受信サーバーによる署名検証が行われます。Ali-Rtc-Signature の値は、Ali-Rtc-Signature=MD5SUM(MD5CONTENT) として計算されます。ここで、MD5CONTENT=コールバック URL|Ali-Rtc-Timestamp 値|認証キー です。コールバック URL は、設定した完全なコールバック URL です。認証キーは、AppId の作成時に生成された AppKey です。
コールバックメッセージ受信サーバーは、コールバックメッセージを受信すると、コールバック URL、Ali-Rtc-Timestamp 値、および認証キーを連結し、MD5 値を計算して暗号化文字列を取得します。その後、計算された暗号化文字列と、ApsaraVideo Real-time Communication から送信された HTTP(S) リクエストヘッダー内の Ali-Rtc-Signature フィールド値を比較します。値が一致しない場合、そのリクエストは無効です。
失敗時のコールバック再試行
Alibaba Cloud がコールバックリクエストを開始した際、ビジネスサーバーが HTTP ステータスコード 200 で応答した場合にのみ、コールバックは成功とみなされます。コールバックが失敗した場合、Alibaba Cloud は 1 秒、2 秒、5 秒、10 秒、1 分、2 分、5 分の間隔で 7 回再試行します。各再試行に対して、対応するコールバックレコードが生成されます。
レスポンスフィールド
|
フィールド |
型 |
説明 |
例 |
|
object |
|||
| RequestId |
string |
リクエスト ID。 |
******3B-0E1A-586A-AC29-742247****** |
| SubId |
string |
サブスクリプション ID。 |
Sub-******9799B2C4500****** |
例
成功レスポンス
JSONJSON
{
"RequestId": "******3B-0E1A-586A-AC29-742247******",
"SubId": "Sub-******9799B2C4500******"
}
エラーコード
|
HTTP ステータスコード |
エラーコード |
エラーメッセージ |
説明 |
|---|---|---|---|
| 400 | InvalidParam | %s. | パラメーター検証に失敗しました。 |
| 400 | MissingParam | %s, please check and try again later. | 必須パラメーターが不足しています。確認して再試行してください。 |
| 400 | InvalidAppId | %s, please check and try again later. | AppId が無効です。確認して再試行してください。 |
| 500 | InternalError | InternalError | |
| 403 | OperationDenied | Your account has not enabled the Live service | |
| 403 | Forbidden | %s, please check and try again later. | 必須の権限がありません。確認して再試行してください。 |
完全なリストについては、「エラーコード」をご参照ください。
変更履歴
完全なリストについては、「変更履歴」をご参照ください。