全部产品
Search
文档中心

视频直播:创建混流转推任务(新)

更新时间:Mar 12, 2024

调用StartLiveMPUTask创建混流转推任务。

使用说明

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

QPS限制

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

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称

类型

是否必选

示例值

描述

Action String StartLiveMPUTask

系统规定参数。取值:StartLiveMPUTask

AppId String yourAppId

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

ChannelId String yourChannelId

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

TaskId String yourTaskId

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

MixMode String 0

混流模式。取值:

  • 0:单路转推,不混流转码,仅转推原始单路流,无需配置混流转码参数。
  • 1(默认值):混流转码转推。
StreamURL String rtmp://example.com/live/stream

直播推流地址,仅支持传单个地址。生成规则请参见推流地址和播放地址

说明
  • 对已开防盗链鉴权的域名,需要在推流地址中包含鉴权串。
  • 禁止同一个StreamURL在不同任务中同时使用。
  • 任务停止10S之内,禁止使用同一个StreamURL。
Region String CN-Shanghai

请求的混流服务所在区域。取值:

  • CN-Shanghai:上海。
  • AP-Singapore(默认值):新加坡。
  • EMAA-Saudi:沙特。
SingleSubParams Object

单流转推参数,单流转推(MixMode=0)时必填。需要混流转码时不填。

UserId String yourSubUserId

单流转推的用户ID,一次只能转推一路流。

StreamType String 0

单流转推模式下转推流类型。取值:

  • 0(默认值):转推原始流。
  • 1:仅转推音频流。
  • 2:仅转推视频流。
SourceType String camera

单流转推模模式下视频输入流类型,仅针对视频流(StreamType=2)有效。取值:

  • camera(默认值):摄像头。
  • shareScreen:屏幕共享。
TranscodeParams Object

混流转码转推参数,混流转码转推(MixMode=1)时必填。需要单流转推时不填。

UserInfos Array

混流用户信息,不指定用户则所有用户混流。

UserId String yourSubUserId

混流用户ID。

StreamType String 0

混流转码模式下转推流类型。取值:

  • 0(默认值):转推原始流。
  • 1:仅转推音频流。
  • 2:仅转推视频流。
SourceType String camera

混流转码模模式下视频输入流类型,仅针对视频流(StreamType=2)有效。取值:

  • camera(默认值):摄像头。
  • shareScreen:屏幕共享。
EncodeParams Object

转推输出的编码参数。

AudioOnly String false

是否为纯音频,取值:

  • true:纯音频,仅需要设置音频相关参数。
  • false(默认值):非纯音频,所有参数均不能为空。
VideoWidth String 1920

视频宽,取值范围:[0, 1920],单位:px。

VideoHeight String 1000

视频高,取值范围:[0, 1920],单位:px。

VideoFramerate String 25

视频帧率,取值范围:[1, 60],单位:fps。

VideoBitrate String 3500

视频码率,取值范围:[1, 10000],单位:kbps。

VideoGop String 20

视频GOP,取值范围:[1, 60]。

AudioSampleRate String 44100

音频采样率,取值:8000、16000、32000、44100、48000,单位:Hz。

AudioBitrate String 128

音频码率,取值范围:[8, 500],单位:kbps。

AudioChannels String 2

音频声道数,取值:1、2。

Layout Object

视频布局信息。

说明 音视频转码时,需要指定视频布局信息;纯音频转码时,禁止填写视频布局信息。
UserPanes Array

混流用户窗格信息。

UserInfo Object

该窗格对应的混流用户信息,不填时后台按照上行主播的进房顺序自动填充,仅针对原始流和视频流有效。

UserId String yourSubUserId

混流用户ID。

SourceType String camera

混流转码模模式下视频输入流类型,仅针对视频流(StreamType=2)有效。取值:

  • camera(默认值):摄像头。
  • shareScreen:屏幕共享。
X String 0.2456

坐标X,归一化百分比。

Y String 0.3789

坐标Y,归一化百分比。

Width String 0.3564

窗格宽,归一化百分比。

Height String 0.2632

窗格高,归一化百分比。

ZOrder String 0

叠放顺序,0为最底层,1层在0层之上,以此类推。

BackgroundImageUrl String yourImageUrl

子画面的背景图URL。当用户关闭摄像头或未进入房间时,会在布局位置填充为此图片。

RenderMode String 1

子画面输出时的显示模式,取值:

  • 0:缩放并显示黑底。
  • 1(默认值):裁剪。
Background Object

混流全局背景图。

URL String yourImageUrl

全局背景图URL。

RenderMode String 1

子画面输出时的显示模式:

  • 0:缩放并显示黑底。
  • 1(默认):裁剪。
SeiParams Object

SEI配置参数。

PayloadType String 100

SEI消息的自定义payload_type,取值范围100-254。不设置时,SEI的payload_type为默认值为5。

LayoutVolume Object

布局和音量SEI,该参数内容可以为空,表示携带默认的布局和音量SEI。

FollowIdr String 0

发送IDR关键帧时是否确保携带SEI,取值:

  • 0:不确保带SEI。
  • 1:确保带SEI。
Interval String 1000

SEI发送间隔,取值范围:[1000, 5000],单位:毫秒。

PassThrough Object

透传SEI。

PayloadContentKey String yourPayloadContentKey

透传SEI的payload内容对应的key值。不设置时,key为默认值udd。

PayloadContent String yourPayloadContent

透传SEI的payload内容。

FollowIdr String 0

发送IDR关键帧时是否确保携带SEI,取值:

  • 0:不确保带SEI。
  • 1:确保带SEI。
Interval String 1000

SEI发送间隔,取值范围:[1000, 5000],单位:毫秒。

布局和音量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"}

返回数据

名称

类型

示例值

描述

RequestId String 0F72851F-5DC1-1979-9B2C-450040316C3E

请求ID。

示例

请求示例

http(s)://live.aliyuncs.com/?Action=StartLiveMPUTask
&AppId=yourAppId
&ChannelId=yourChannelId
&TaskId=yourTaskId
&MixMode=0
&StreamURL=rtmp://example.com/live/stream
&Region=CN-Shanghai
&SingleSubParams={"UserId":"yourSubUserId","StreamType":"0","SourceType":"camera"}
&TranscodeParams={"UserInfos":[{"UserId":"yourSubUserId","StreamType":"0","SourceType":"camera"}],"EncodeParams":{"AudioOnly":"false","VideoWidth":"1920","VIdeoHeight":"1080","VideoFramerate":"25","VideoBitrate":"3500","VideoGop":"20","AudioSampleRate":"44100","AudioBitrate":"128","AudioChannels":"2"},"Layout":{"UserPanes":[{"UserInfo":{"UserId":"yourSubUserId","SourceType":"camera"},"X":"0.2456","Y":"0.3789","Width":"0.3564","Height":"0.2632","ZOrder":"0","BackgroundImageUrl":"yourImageUrl","RenderMode":"1"}]},"Background":{"URL":"yourImageUrl","RenderMode":"1"}}
&SeiParams={"PayloadType":"100","LayoutVolume":{"FollowIdr":"0","Interval":"1000"},"PassThrough":{"PayloadContentKey":"yourPayloadContentKey","PayloadContent":"yourPayloadContent","FollowIdr":"0","Interval":"1000"}}
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<StartLiveMPUTaskResponse>
    <RequestId>0F72851F-5DC1-1979-9B2C-450040316C3E</RequestId>
</StartLiveMPUTaskResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "0F72851F-5DC1-1979-9B2C-450040316C3E"
}

错误码

访问错误中心查看更多错误码。