设置房间混流布局
功能说明
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
请求参数说明
参数 | 说明 |
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 | |
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 来表示的。
本 API 私有错误码如下:
错误码 | 含义说明 |
100001 | 服务器内部错误,请重试 |
100002 | 请参数非法,请根据错误描述检查请求是否正确 |
100006 | 该房间类型需要时 Live 房间类型 |
100004 | 房间不存在或者已解散 |
100007 | 付费套餐不满足 |
100422 | 请求短时间过多,被频控,单个sdkappid所有混流操作叠加起来20/s |
100424 | 混流任务不存在,请重试 |
100427 | 该房间混流操作过快,请稍后重试 |