StartLiveMPUTask_视频直播_API文档

插件下载了解更多
VS Code 插件
安装插件之前,确保已安装 VS Code安装插件之前,确保已安装 VS Code
Alibaba Cloud Developer Toolkit is a collection of extensions that can help access Alibaba Cloud services in Visual Studio Code.
JetBrains 插件
安装插件之前,确保已安装 JetBrains IDE安装插件之前,确保已安装 JetBrains IDE
The Alibaba Cloud Developer Toolkit for JetBrains makes it easier to access Alibaba Cloud services.

接口说明

单个应用 ID 默认支持单路转推任务上限为 200 个,混流转码转推任务上限为 40。如果您需要提升配额,请提交工单

混流任务生命周期

启动

  • 主播首次开播,可以调用 StartLiveMPUTask 启动旁路。

    • 若无用户入会,会返回 channel 不存在错误。
    • 用户开始推流时才会输出旁路流。若单路任务用户未推流,则旁路流无法播放。
    • 混流任务需保证至少有一个用户有推流,旁路流才可播放。未推流的用户对应的布局画面会展示黑屏。
  • 客户业务服务器建议记录旁路任务状态、任务类型、任务参数。

    • 任务状态:启动、停止。
    • 任务类型:单路、混流。
    • 任务参数:即最新的入参,例如:调用 UpdateLiveMPUTask 成功后,记录最新任务参数。
  • 在连麦或者 PK 场景下,此时任务已经被更新为混流。若当前主播异常退出重新入会后,客户业务服务器可以根据保存的最新的任务类型和任务参数,直接调用 StartLiveMPUTask 启动混流任务。

    • 如果启动前任务未被系统自动清理,则直接启动成功。
    • 如果任务还未被系统自动清理,则会返回任务已存在错误码。

结束

  • 主播离会,需要主动调用 StopLiveMPUTask 停止旁路任务。
  • 若任务所指定的所有用户均已离会但未主动调用 StopLiveMPUTask,系统会在 2 分钟后对旁路任务进行停止。

QPS 限制

本接口的单用户 QPS 限制为 500 次/秒。超过限制,API 调用会被限流,这可能会影响您的业务,请合理调用。

流控信息

请求速率为500/1(s)。

授权信息

如下是此API对应的授权信息,用于RAM权限策略语句的Action元素中,为RAM用户或RAM角色授予调用此API的权限。请通过 RAM 访问控制设置,使用方法可参考访问控制帮助文档

具体说明如下:展开详情

操作访问级别资源类型条件关键字关联操作
live:StartLiveMPUTask
Create
全部资源
*

请求参数

字段名称字段详情
AppIdstring

应用 ID,仅支持传单个 ID。由大小写字母、数字、下划线、短划线(-)组成,最大 64 字符。

示例值:yourAppId
ChannelIdstring

频道 ID,仅支持传单个 ID。由大小写字母、数字、下划线、短划线(-)组成,最大 64 字符。

示例值:yourChannelId参考取值来源:
    DescribeCasterChannels
TaskIdstring

任务 ID,仅支持传单个 ID。由大小写字母、数字、下划线、短划线(-)组成,最大 55 字符。此 ID 为旁路转推的标识,需保证唯一。

示例值:yourTaskId
MixModestring

混流模式。取值:展开详情

示例值:0
StreamURLstring

直播推流地址,仅支持 RTMP 协议,仅支持传单个地址,最大长度不超过 2048 个字符。生成规则请参见推流地址和播放地址展开详情

示例值:rtmp://example.com/live/stream参考取值来源:
    ListRtcMPUTaskDetail
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生成该信息时的操作系统时间戳,单位为毫秒。
verSEI 格式版本信息,如当前版本为 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 接口发起了跨频道通话。如果不同频道的用户没有进行通话,则无法创建跨房间混流任务。如何发起跨房间通话,请参见跨房间订阅功能

返回参数

字段名称字段详情
RequestIdstring

请求 ID。

示例值:0F72851F-5DC1-1979-9B2C-450040316C3E

返回示例

变更历史

相关示例