接口说明
单个应用 ID 默认支持单路转推任务上限为 200 个,混流转码转推任务上限为 40。如果您需要提升配额,请提交工单。
混流任务生命周期
启动
-
主播首次开播,可以调用 StartLiveMPUTask 启动旁路。
- 若无用户入会,会返回 channel 不存在错误。
- 用户开始推流时才会输出旁路流。若单路任务用户未推流,则旁路流无法播放。
- 混流任务需保证至少有一个用户有推流,旁路流才可播放。未推流的用户对应的布局画面会展示黑屏。
-
客户业务服务器建议记录旁路任务状态、任务类型、任务参数。
- 任务状态:启动、停止。
- 任务类型:单路、混流。
- 任务参数:即最新的入参,例如:调用 UpdateLiveMPUTask 成功后,记录最新任务参数。
-
在连麦或者 PK 场景下,此时任务已经被更新为混流。若当前主播异常退出重新入会后,客户业务服务器可以根据保存的最新的任务类型和任务参数,直接调用 StartLiveMPUTask 启动混流任务。
- 如果启动前任务未被系统自动清理,则直接启动成功。
- 如果任务还未被系统自动清理,则会返回任务已存在错误码。
结束
- 主播离会,需要主动调用 StopLiveMPUTask 停止旁路任务。
- 若任务所指定的所有用户均已离会但未主动调用 StopLiveMPUTask,系统会在 2 分钟后对旁路任务进行停止。
QPS 限制
本接口的单用户 QPS 限制为 500 次/秒。超过限制,API 调用会被限流,这可能会影响您的业务,请合理调用。
流控信息
请求参数
字段名称 | 字段详情 |
---|---|
AppIdstring | 应用 ID,仅支持传单个 ID。由大小写字母、数字、下划线、短划线(-)组成,最大 64 字符。 示例值:yourAppId |
ChannelIdstring | 频道 ID,仅支持传单个 ID。由大小写字母、数字、下划线、短划线(-)组成,最大 64 字符。 示例值:yourChannelId参考取值来源: DescribeCasterChannels |
TaskIdstring | 任务 ID,仅支持传单个 ID。由大小写字母、数字、下划线、短划线(-)组成,最大 55 字符。此 ID 为旁路转推的标识,需保证唯一。 示例值:yourTaskId |
MixModestring | 混流模式。取值:展开详情 示例值:0 |
StreamURLstring | |
MultiStreamURLarray<object> | 多地址转推参数,可填写多个直播推流地址。展开详情 |
Regionstring | 请求的混流服务所在区域。取值:展开详情 示例值:CN-Shanghai |
MaxIdleTimestring | 空闲超时时间;单位为秒,取值范围为[10,86400]。展开详情 示例值:10 |
SingleSubParamsobject | 单流转推参数,单流转推(MixMode=0)时必填。需要混流转码时不填。 |
TranscodeParamsobject | 混流转码转推参数,混流转码转推(MixMode=1)时必填。需要单流转推时不填。 |
SeiParamsobject | SEI 配置参数。 |
请求说明
布局和音量 SEI
参数 | 说明 |
---|---|
canvas | 画布信息,参数信息: - w:画布宽,单位:像素。 - h:画布高,单位:像素。 - bgnd:画布的背景颜色,格式为 RGB 定义下的十六进制整数。 |
stream | 视频流信息,参数信息: - uid:主播的用户 ID。 - 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 信息里 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
返回参数
字段名称 | 字段详情 |
---|---|
RequestIdstring | 请求 ID。 示例值:0F72851F-5DC1-1979-9B2C-450040316C3E |