设置房间混流布局

功能说明

App 管理员可以通过该接口设置指定房间的混流布局画面。
注意:
要使用该能力前提是: 需要创建房间的时候打开房间的混流能力,即 IsUnlimitedRoomEnabled 设置为 true, 对应SDK侧 TUILiveKit 视频房 组件创建的房间。
混流涉及的主播必须都在麦上。

请求 URL 示例

https://xxxxxx/v4/live_engine_http_srv/set_mix_stream?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

请求参数说明

下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参见 REST API 简介
参数
说明
xxxxxx
SDKAppID 所在国家/地区对应的专属域名:
中国:console.tim.qq.com
新加坡:adminapisgp.im.qcloud.com
美国:adminapiusa.im.qcloud.com
v4/live_engine_http_srv/set_mix_stream
请求接口
sdkappid
创建 Live 应用分配的 SDKAppID
identifier
必须为 App 管理员账号,更多详情请参见 App 管理员
usersig
App 管理员账号生成的签名,具体操作请参见 生成 UserSig
random
请输入随机的32位无符号整数,取值范围0 - 4294967295
contenttype
请求格式固定值为json

最高调用频率

20次/秒。

请求包示例

九宫格模式
{
"RoomId":"mix1",
"LayoutMode":0, //九宫格模式
"VideoEncode":{
"Width":720,
"Height":1280
}
}
自定义模式
{
"RoomId":"mix1",
"LayoutMode":1000,
"VideoEncode":{
"Width":720,
"Height":1280
},
"LayoutInfo":{
"LayoutList":[
{
"LocationX":0,
"LocationY":0,
"ImageWidth":360,
"ImageHeight":1280,
"RoomId":"mix1",
"Member_Account":"brennanli",
"StreamType":0,
"ZOrder":1
},
{
"LocationX":360,
"LocationY":0,
"ImageWidth":360,
"ImageHeight":1280,
"RoomId":"mix1",
"Member_Account":"tandy",
"StreamType":0,
"ZOrder":1
},
{ //表示只需要展示音频, 不需要画面
"LocationX":0,
"LocationY":0,
"ImageWidth":0,
"ImageHeight":0,
"RoomId":"mix1",
"Member_Account":"faker",
"StreamType":0,
"ZOrder":1
},
]
}
}
悬浮画面
{
"RoomId":"mix1",
"LayoutMode":1000,
"VideoEncode":{
"Width":720,
"Height":1280
},
"LayoutInfo":{
"LayoutList":[
{
"LocationX":540,
"LocationY":960,
"ImageWidth":180,
"ImageHeight":320,
"RoomId":"mix1",
"Member_Account":"brennanli",
"StreamType":0,
"ZOrder":1
}
],
"MaxUserLayout":{
"RoomId":"mix1",
"Member_Account":"tandy",
"StreamType":0,
"ZOrder":0
}
}
}
屏幕共享画面
{
"RoomId":"mix1",
"LayoutMode":1000,
"VideoEncode":{
"Width":720,
"Height":1280
},
"LayoutInfo":{
"LayoutList":[
{
"LocationX":630,
"LocationY":0,
"ImageWidth":90,
"ImageHeight":160,
"RoomId":"mix1",
"Member_Account":"brennanli",
"StreamType":0,
"ZOrder":1

}
],
"MaxUserLayout":{
"RoomId":"mix1",
"Member_Account":"brennanli",
"StreamType":1,
"ZOrder":0
}
}
}

请求包字段说明

字段
类型
属性
说明
RoomId
String
必填
房间 ID,最长48个字节
LayoutMode
Integer
必填
布局模式,默认为0
0表示默认的九宫格模式,单路流走旁路转推,多路流会转码混流下推
1000表示自定义模式,自定义模式下需要设置 VideoEncode, LayoutInfo 等字段,自定义模式下都会混流转码下推
VideoEncode
Object
选填
分辨率信息,默认为720P:
自定义模式下有效
九宫格模式下如果房间只有一个主播,会进行旁路转推,填写该参数无效
Width
Integer
选填
画面分辨率宽
Height
Integer
选填
画面分辨率高
LayoutInfo
Object
选填
混流画面布局信息,只有自定义模式下该字段有效
LayoutList
Array
选填
混流主播布局信息,只有自定义模式下该字段有效
MaxUserLayout
Object
选填
屏幕共享,悬浮窗时候的大画面,只有自定义模式下该字段有效
LayoutList 里的元素字段说明
字段
类型
属性
说明
LocationX
Integer
必填
该主播在画面的 x 位置
LocationY
Integer
必填
该主播在画面的 y 位置
ImageWidth
Integer
必填
该主播在画面的宽度
ImageHeight
Integer
必填
该主播在画面的高度
Member_Account
String
必填
主播账号 Id
StreamType
Integer
必填
流类型:
0表示摄像头流
1表示屏幕分享流
ZOrder
Integer
必填
主播画面层级:0表示最底层
RoomId
String
必填
该主播对应的房间 Id
MaxUserLayout 字段说明
字段
类型
属性
说明
Member_Account
String
必填
主播账号 Id
StreamType
Integer
必填
流类型:
0表示摄像头流
1表示屏幕分享流
ZOrder
Integer
必填
主播画面层级:0表示最底层
RoomId
String
必填
该主播对应的房间 Id

应答包体示例

基础形式
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"RequestId": "Id-8c9858f01e954611ae2d4c1b1ed7d583-O-Seq-52720"
}

应答包字段说明

字段
类型
说明
ActionStatus
String
请求处理的结果,OK 表示处理成功,FAIL 表示失败
ErrorCode
Integer
错误码,0表示成功,非0表示失败
ErrorInfo
String
错误信息
RequestId
String
唯一请求 ID,每次请求都会返回,定位问题时需要提供该次请求的 RequestId

错误码说明

除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:
错误码
含义说明
100001
服务器内部错误,请重试
100002
请参数非法,请根据错误描述检查请求是否正确
100006
该房间类型需要时 Live 房间类型
100004
房间不存在或者已解散
100007
付费套餐不满足
100422
请求短时间过多,被频控,单个sdkappid所有混流操作叠加起来20/s
100424
混流任务不存在,请重试
100427
该房间混流操作过快,请稍后重试