建立混流轉推事件訂閱。
介面說明
本介面用於建立混流轉推事件訂閱。在建立訂閱時,您可以設定回呼位址、訂閱應用程式與頻道資訊等參數。
QPS 限制
本介面的單使用者 QPS 限制為每秒 50 次。超過限制時,API 呼叫會被限流,這可能會影響您的業務,請合理呼叫。
調試
您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。
調試
授權資訊
|
操作 |
存取層級 |
資源類型 |
條件關鍵字 |
關聯操作 |
|
live:CreateRtcMPUEventSub |
create |
*全部資源。
|
無 | 無 |
請求參數
|
名稱 |
類型 |
必填 |
描述 |
樣本值 |
| AppId |
string |
是 |
訂閱的應用程式 ID。透過存取 影片直播>直播+>即時音影片>應用程式管理 可以檢視擁有的應用程式 ID,若沒有則可透過【建立應用程式】進行新建。 說明
應用程式 ID 由大小寫字母、數字、底線、短橫線(-)組成,最多 64 個字元。 |
yourAppId |
| ChannelIds |
string |
否 |
指定接收回呼的混流任務頻道 ID,可以同時填寫多個頻道 ID,多個頻道 ID 之間使用英文逗號「,」分隔。 說明
|
yourChannelIds |
| CallbackUrl |
string |
是 |
回呼位址。位址格式請參見以下回呼內容規範。 說明
回呼位址通訊協定標頭為 HTTP、HTTPS 等,僅可包含以下字元:a-z、A-Z、0-9、-、_、?、%、=、#、.、/ 和 +,不超過 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 | 回呼事件 Code | 1 |
| ErrorCode | Integer | 回呼事件的錯誤碼 | 10001 |
| ErrorMessage | String | 回呼事件的錯誤原因 | rtmp server init failed |
回呼事件 Code
| 欄位名稱 | 值 | 含義 | 回呼頻率 |
| MPU_STATE_PREPARING | 0 | 旁路轉推任務建立成功,任務被觸發 | 僅回呼 1 次 |
| MPU_STATE_ESTABLISHING | 1 | 旁路轉推任務連線中 | 每 5 秒回呼 1 次 |
| MPU_STATE_RUNNING | 2 | 旁路轉推任務執行中 | 僅回呼 1 次 |
| MPU_STATE_RECOVERING | 3 | 旁路轉推異常中斷,正在恢復中 | 每 5 秒回呼 1 次 |
| MPU_STATE_TERMINATED | 4 | 旁路轉推任務結束,包括正常停止、啟動失敗、異常退出等,透過 ErrorCode 與 ErrorMessage 區分 | 僅回呼 1 次 |
回呼事件的狀態轉移範例如下:
注意:
回呼資訊有可能會亂序到達您的業務伺服器,您可以根據 Payload 中的 EventTs 進行事件排序,如果您只關心回呼事件的最新狀態,可以忽略後續到達的過期事件。
對於透過 API 建立混流轉推任務(新) 建立的混流轉推任務,當房間內所有使用者均離開房間後一段時間,任務會自動停止,停止時會傳送一個 MPU_STATE_TERMINATED 的回呼。
回呼設定僅影響增量任務,不影響存量任務。即:
a. 開啟回呼設定前已啟動的任務,不傳送回呼;
b. 開啟回呼設定後啟動的任務,會傳送回呼;
c. 刪除回呼設定前已啟動的任務,會繼續傳送回呼直到任務結束;
d. 刪除回呼設定後啟動的任務,不傳送回呼。
回呼錯誤碼
當旁路轉推任務結束時,透過 ErrorCode 與 ErrorMessage 標示結束的原因。
| 錯誤碼 | 錯誤訊息 | 含義 |
| 0 | 任務正常停止 | |
| 10001 | rtmp server init failed | 連線失敗,任務異常結束 |
| 10002 | rtmp server internal error | 服務內部錯誤,任務異常結束 |
| 10003 | task idle timeout | 任務閒置逾時後結束 |
回呼驗證說明
事件回呼驗證功能預設開啟,驗證邏輯如下所示:
阿里雲端影片直播服務發起回呼請求時,在 HTTP(S) 請求標頭中包含 Ali-Rtc-Timestamp 和 Ali-Rtc-Signature 欄位,供回呼訊息接收伺服器進行簽章認證。Ali-Rtc-Signature 值計算方式為:Ali-Rtc-Signature=MD5SUM(MD5CONTENT)。其中,MD5CONTENT=回呼位址|Ali-Rtc-Timestamp 取值|驗證金鑰;回呼位址指設定的完整回呼 URL,驗證金鑰指使用者建立 AppId 時產生的 AppKey。
回呼訊息接收伺服器接收回呼訊息時,將回呼位址、Ali-Rtc-Timestamp 取值、驗證金鑰進行拼接後計算 MD5 值,得到加密字串,再將計算出的加密字串與音影片通訊服務發起的 HTTP(S) 請求標頭中的 Ali-Rtc-Signature 欄位值進行比對,如果不一致,則請求非法。
回呼異常重試
阿里雲發起回呼請求時,僅當您的業務伺服器回應 HTTP 狀態碼為 200 時視為回呼成功。若回呼失敗,阿里雲會重試 7 次,分別間隔 1 秒、2 秒、5 秒、10 秒、1 分鐘、2 分鐘、5 分鐘。每次重試請求均會產生對應的回呼記錄。
返回參數
|
名稱 |
類型 |
描述 |
樣本值 |
|
object |
|||
| RequestId |
string |
請求 ID。 |
******3B-0E1A-586A-AC29-742247****** |
| SubId |
string |
訂閱 ID。 |
Sub-******9799B2C4500****** |
樣本
正常返回樣本
JSON格式
{
"RequestId": "******3B-0E1A-586A-AC29-742247******",
"SubId": "Sub-******9799B2C4500******"
}
錯誤碼
|
HTTP status code |
錯誤碼 |
錯誤資訊 |
描述 |
|---|---|---|---|
| 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. | 無權限,請檢查後重試。 |
訪問錯誤中心查看更多錯誤碼。
變更歷史
更多資訊,參考變更詳情。