建立混流轉推任務。
介面說明
單個應用 ID 預設支援單路轉推任務上限為 200 個,混流轉碼轉推任務上限為 40。如果您需要提升配額,請提交工單。
混流任務生命週期
啟動
-
主播首次開播,可以調用 StartLiveMPUTask 啟動旁路。
若無使用者入會,會返回 channel 不存在錯誤。
使用者開始推流時才會輸出旁路流。若單路任務使用者未推流,則旁路流無法播放。
混流任務需保證至少有一個使用者有推流,旁路流才可播放。未推流的使用者對應的布局畫面會展示黑屏。
-
客戶商務服務器建議記錄旁路任務狀態、任務類型、任務參數。
任務狀態:啟動、停止。
任務類型:單路、混流。
任務參數:即最新的入參,例如:調用 UpdateLiveMPUTask 成功後,記錄最新任務參數。
-
在連麥或者 PK 情境下,此時任務已經被更新為混流。若當前主播異常退出重新入會後,客戶商務服務器可以根據儲存的最新的任務類型和任務參數,直接調用 StartLiveMPUTask 啟動混流任務。
如果啟動前任務未被系統自動清理,則直接啟動成功。
如果任務還未被系統自動清理,則會返回任務已存在錯誤碼。
結束
主播離會,需要主動調用 StopLiveMPUTask 停止旁路任務。
若任務所指定的所有使用者均已離會但未主動調用 StopLiveMPUTask,系統會在 2 分鐘後對旁路任務進行停止。
QPS 限制
本介面的單使用者 QPS 限制為 500 次/秒。超過限制,API 呼叫會被限流,這可能會影響您的業務,請合理調用。
調試
您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。
調試
授權資訊
|
操作 |
存取層級 |
資源類型 |
條件關鍵字 |
關聯操作 |
|
live:StartLiveMPUTask |
create |
*全部資源
|
無 | 無 |
請求參數
|
名稱 |
類型 |
必填 |
描述 |
樣本值 |
| AppId |
string |
是 |
應用 ID,僅支援傳單個 ID。由大小寫字母、數字、底線、短劃線(-)組成,最大 64 字元。 |
yourAppId |
| ChannelId |
string |
是 |
頻道 ID,僅支援傳單個 ID。由大小寫字母、數字、底線、短劃線(-)組成,最大 64 字元。 |
yourChannelId |
| TaskId |
string |
是 |
任務 ID,僅支援傳單個 ID。由大小寫字母、數字、底線、短劃線(-)組成,最大 55 字元。此 ID 為旁路轉推的標識,需保證唯一。 |
yourTaskId |
| MixMode |
string |
是 |
混流模式。取值:
|
0 |
| StreamURL |
string |
否 |
直播推流地址,僅支援 RTMP 協議,僅支援傳單個地址,最大長度不超過 2048 個字元。建置規則請參見推流地址和播放地址。 說明
|
rtmp://example.com/live/stream |
| MultiStreamURL |
array<object> |
否 |
多地址轉推參數,可填寫多個直播推流地址。 說明
在設定任務的轉推地址時,StreamURL 參數與 MultiStreamURL 參數,只能配置其中一個參數,且必須配置其中一個參數。 |
|
|
object |
否 |
|||
| URL |
string |
否 |
直播推流地址,僅支援 RTMP 協議,最大長度不超過 2048 個字元。建置規則請參見推流地址和播放地址。 |
rtmp://example.com/live/stream**** |
| IsAliCdn |
boolean |
否 |
是否轉推到阿里雲 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 |
是 |
單流轉推的使用者識別碼,一次只能轉推一路流。 |
yourSubUserId |
| TranscodeParams |
object |
否 |
混流轉碼轉推參數,混流轉碼轉推(MixMode=1)時必填。需要單流轉推時不填。 |
|
| Background |
object |
否 |
混流全域背景圖。 |
|
| RenderMode |
string |
否 |
子畫面輸出時的顯示模式:
|
1 |
| URL |
string |
否 |
全域背景圖 URL,最大長度不超過 2048 個字元。 |
yourImageUrl |
| EncodeParams |
object |
否 |
轉推輸出的編碼參數。 |
|
| AudioOnly |
string |
否 |
是否為純音頻,取值:
|
false |
| AudioBitrate |
string |
否 |
音頻碼率,取值範圍:[8, 500],單位:kbps。 |
128 |
| AudioChannels |
string |
否 |
音頻聲道數,取值:1、2。 |
2 |
| AudioSampleRate |
string |
否 |
音頻採樣率,取值:8000、16000、32000、44100、48000,單位:Hz。 |
44100 |
| VideoCodec |
string |
否 |
視頻編碼格式。取值:
|
H.264 |
| VideoBitrate |
string |
否 |
視頻碼率,取值範圍:[1, 10000],單位:kbps。 |
3500 |
| VideoFramerate |
string |
否 |
視訊框架率,取值範圍:[1, 60],單位:fps。 |
25 |
| VideoGop |
string |
否 |
視頻 GOP,取值範圍:[1, 60]。 |
20 |
| VideoHeight |
string |
否 |
視頻高,取值範圍:[0, 1920],單位:px。 |
1000 |
| VideoWidth |
string |
否 |
視頻寬,取值範圍:[0, 1920],單位:px。 |
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 |
否 |
混流使用者識別碼。 |
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 |
是 |
混流時訂閱的使用者識別碼。 |
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 的 payload 內容。 |
yourPayloadContent |
| PayloadContentKey |
string |
否 |
透傳 SEI 的 payload 內容對應的 key 值。不設定時,key 為預設值 udd。 |
yourPayloadContentKey |
| PayloadType |
string |
否 |
SEI 訊息的自訂 payload_type,取值範圍 100-254。不設定時,SEI 的 payload_type 為預設值為 5。 |
100 |
布局和音量 SEI
| 參數 | 說明 |
| canvas | 畫布資訊,參數資訊: - w:畫布寬,單位:像素。 - h:畫布高,單位:像素。 - bgnd:畫布的背景顏色,格式為 RGB 定義下的十六進位整數。 |
| stream | 視頻流資訊,參數資訊: - uid:主播的使用者識別碼。 - paneid:該地區在窗格編號,取值[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 參數。
以直播連麥情境為例:
如果只是單主播,觀眾端接收的 SEI 資訊裡 stream 集合只有一個成員資訊;如果是主播正在連麥或者 PK,觀眾端接收的 SEI 資訊裡 stream 集合會有多個成員資訊。
例如,當主播 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}
當主播 111 和觀眾 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}
判斷 stream 數組的個數可以知道當前直播布局是否發生切換,stream 數組的個數為 1 時,則是單主播推流;stream 數組的個數大於 1,則主播在連麥或 PK 中。通過成員的布局資訊,知道每個成員在混流布局中的具體位置。
透傳 SEI
自訂 SEI,通過 StartLiveMPUTask 命令啟動混流轉推任務,在 PassThrough 參數中,指定 PayloadContent 內容;也可以在 UpdateLiveMPUTask 命令更新混流轉推任務時,在 PassThrough 參數中,指定 PayloadContent 內容。
自訂 SEI 可以周期性發送,通過 PassThrough 參數中的 Interval 來設定周期,單位為 ms;
- 自訂 SEI 也可以跟隨主要畫面格發送,通過 PassThrough 參數中的 FollowIdr 來設定。
既可以按照 Interval 來周期性發送,也可以將 SEI 跟隨主要畫面格來發送,如 Interval:1000,FollowIdr: 1 表示每隔 1000ms 發送一次自訂 SEI,並且在發送主要畫面格時攜帶自訂 SEI。
當不攜帶 Interval 以及不攜帶 FollowIdr 時,表示該自訂 SEI 只在調用時發送一次。
例如,當主播 111 單主播推流時,調用 UpdateLiveMPUTask 命令下發周期性 SEI,PassThrough 參數中的 Interval 設定為 1000,FollowIdr 設定為 0,PayloadContent 設定為"hello world",那麼每隔 1000ms 將發送一次自訂 SEI,觀眾端收到的 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"}
跨頻道多使用者混流
若您需要將跨多個頻道中的多個主播進行混流布局並轉推到直播服務時,您需要將發起跨頻道通話的主播的 UserID、ChannelID,以及對端的 UserID 作為入參建立混流任務。樣本如下: 在直播 PK 情境中,頻道 channelA 的主播 userA,通過用戶端介面發起了和頻道 channelB 主播 userB 的跨頻道 PK,並將兩個主播的混流畫面輸出給頻道 channelA 的麥下觀眾觀看。則,此時建立混流任務時關於頻道和使用者參數的指定示範如下:
ChannelID: 指定為 channelA
UserInfos->UserId :分別指定 userA 和 userB
建立跨頻道多使用者的混流任務的前提是,已經通過用戶端 SDK 介面發起了跨頻道通話。如果不同頻道的使用者沒有進行通話,則無法建立跨房間混流任務。如何發起跨房間通話,請參見跨房間訂閱功能。
返回參數
|
名稱 |
類型 |
描述 |
樣本值 |
|
object |
請求 ID。 |
||
| RequestId |
string |
請求 ID。 |
0F72851F-5DC1-1979-9B2C-450040316C3E |
樣本
正常返回樣本
JSON格式
{
"RequestId": "0F72851F-5DC1-1979-9B2C-450040316C3E"
}
錯誤碼
|
HTTP status code |
錯誤碼 |
錯誤資訊 |
描述 |
|---|---|---|---|
| 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 |
訪問錯誤中心查看更多錯誤碼。
變更歷史
更多資訊,參考變更詳情。