启动合流任务 - CreateMixJob
功能介绍
调用此接口创建合流转码任务。
支持纯音频录制和音视频录制:
纯音频录制
encode_template填audio_only,音频合流会动态选择最大三方的声音。
layout_template、layout_panes以及其他视频相关参数都不填,填就忽略。
音视频录制(包括共享桌面)
encode_template非audio_only,layout_template、layout_panes必须非空。
音频合流会动态选择最大三方的声音。
API触发合流录制流名规则:{jobtype}_{jobid}_{roomid},其中jobtype取值为'm'代表合流录制。
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限,具体权限要求请参见权限和授权项。
URI
POST /v2/apps/{app_id}/mix-stream-jobs
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
app_id | 是 | String | 应用id |
请求参数
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
Content-Type | 是 | String | 内容类型。取值application/json。 |
X-Auth-Token | 否 | String | 用户Token。使用Token鉴权方式时必选。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
Authorization | 否 | String | 使用AK/SK方式认证时必选,携带的鉴权信息。 |
X-Sdk-Date | 否 | String | 使用AK/SK方式认证时必选,请求的发生时间。 |
X-Project-Id | 否 | String | 使用AK/SK方式认证时必选,携带项目ID信息。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
mix_param | 是 | MixParam object | 合流参数 |
record_param | 否 | RecordParam object | 录制参数 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
room_id | 是 | String | 房间id |
encode_template | 是 | String | 输出编码模板名称
|
max_idle_time | 否 | Integer | 最长空闲频道时间。 取值范围:[5,43200],默认值为30。 单位:秒。 如果频道内无连麦方的状态持续超过该时间,录制程序会自动退出。退出后,再次调用start请求,会产生新的录制任务。 连麦方指:joiner或者publisher的用户。 |
layout_template | 否 | String | 视频布局模板编号,不混视频的时候,不需要带。
|
default_user_background_image | 否 | String | 默认用户背景图地址,图片先上传obs,格式s3://bucket/object,如:s3://rtc-bucket-cn-north-4/img/testImg.jpg。默认使用等比缩放裁剪,保证铺满。 |
screen_background_image | 否 | String | 共享屏幕的背景图地址,图片先上传obs,格式s3://bucket/object,如:s3://rtc-bucket-cn-north-4/img/testImg.jpg。 在一大多小的布局场景下,无论大窗是显示非指定用户(屏幕共享人的桌面)还是指定用户的共享桌面,都通过该字段指定背景图。 |
background_image | 否 | String | 画布背景图地址,使用背景图功能需先上传图片到obs,填写此字段要求格式为s3://bucket/object,其中bucket和object指图片所在的桶和路径,如:s3://rtc-bucket-cn-north-4/img/testImg.jpg。默认使用等比缩放裁剪,保证铺满。 |
layout_panes | 否 | Array of MixLayoutPane objects | 需要混流的视频列表。若不需要混流视频,则可不传递该参数。 nine_grids_view模板不需要填写本字段。 |
user_background_images | 否 | Array of MixUserBackgroundImage objects | 指定用户背景图,优先级大于default_user_background_image |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
id | 否 | Integer | 窗口id,从1开始编号 |
user_id | 否 | String | 加入房间的用户id |
video_type | 否 | String | 标识视频流的类型,可选摄像头流或者屏幕分享流。
默认为CAMERASTREAM。 |
x | 否 | Float | 坐标x,归一化百分比,画布上该画面左上角的横坐标的相对值,范围是 [0.0,1.0]。从左到右布局,0.0在最左端,1.0在最右端,小数取值范围在float内,自定义布局场景下填写本字段。 |
y | 否 | Float | 坐标y,归一化百分比,画布上该画面左上角的纵坐标的相对值,范围是 [0.0,1.0]。从上到下布局,0.0在最上端,1.0在最下端,小数取值范围在float内,自定义布局场景下填写本字段。 |
width | 否 | Float | 窗格宽,归一化百分比,小数取值范围在float内,自定义布局场景下填写本字段。 |
height | 否 | Float | 窗格高,归一化百分比,小数取值范围在float内,自定义布局场景下填写本字段。 |
zorder | 否 | Integer | 叠放顺序,0为最底层,1层在0层之上,以此类推,最大支持25层,自定义布局场景下填写本字段。 |
crop_mode | 否 | String | 裁剪模式,自定义布局场景下填写本字段,支持两种模式:
|
filling_policy | 否 | String | 填充策略,仅限屏幕共享模板(包括screen_share_right、screen_share_left)场景下填写本字段,支持两种模式:
|
响应参数
状态码:201
参数 | 参数类型 | 描述 |
|---|---|---|
X-request-Id | String | 此字段携带请求ID号,以便任务跟踪。 |
参数 | 参数类型 | 描述 |
|---|---|---|
job_id | String | 任务编号,可以用于修改、查看和停止合流任务 |
stream_name | String | 流名 |
app_id | String | 应用id |
room_id | String | 房间id |
mix_param | MixParam object | 合流参数 |
record_param | RecordParam object | 录制参数 |
create_time | String | 任务创建的时间,形如“2006-01-02T15:04:05.075Z”,时区为:UTC |
update_time | String | 任务中的布局更新的时间,形如“2006-01-02T15:04:05.075Z”,时区为:UTC |
state | String | 任务状态。
|
stop_reason | String | 任务结束原因
|
description | String | 状态描述,对state字段的一些补充说明,可用于人工查阅。 |
start_time | String | 任务开始时间,形如“2006-01-02T15:04:05.075Z”,时区为:UTC |
stop_time | String | 任务结束时间,形如“2006-01-02T15:04:05.075Z”,时区为:UTC |
参数 | 参数类型 | 描述 |
|---|---|---|
room_id | String | 房间id |
encode_template | String | 输出编码模板名称
|
max_idle_time | Integer | 最长空闲频道时间。 取值范围:[5,43200],默认值为30。 单位:秒。 如果频道内无连麦方的状态持续超过该时间,录制程序会自动退出。退出后,再次调用start请求,会产生新的录制任务。 连麦方指:joiner或者publisher的用户。 |
layout_template | String | 视频布局模板编号,不混视频的时候,不需要带。
|
default_user_background_image | String | 默认用户背景图地址,图片先上传obs,格式s3://bucket/object,如:s3://rtc-bucket-cn-north-4/img/testImg.jpg。默认使用等比缩放裁剪,保证铺满。 |
screen_background_image | String | 共享屏幕的背景图地址,图片先上传obs,格式s3://bucket/object,如:s3://rtc-bucket-cn-north-4/img/testImg.jpg。 在一大多小的布局场景下,无论大窗是显示非指定用户(屏幕共享人的桌面)还是指定用户的共享桌面,都通过该字段指定背景图。 |
background_image | String | 画布背景图地址,使用背景图功能需先上传图片到obs,填写此字段要求格式为s3://bucket/object,其中bucket和object指图片所在的桶和路径,如:s3://rtc-bucket-cn-north-4/img/testImg.jpg。默认使用等比缩放裁剪,保证铺满。 |
layout_panes | Array of MixLayoutPane objects | 需要混流的视频列表。若不需要混流视频,则可不传递该参数。 nine_grids_view模板不需要填写本字段。 |
user_background_images | Array of MixUserBackgroundImage objects | 指定用户背景图,优先级大于default_user_background_image |
参数 | 参数类型 | 描述 |
|---|---|---|
id | Integer | 窗口id,从1开始编号 |
user_id | String | 加入房间的用户id |
video_type | String | 标识视频流的类型,可选摄像头流或者屏幕分享流。
默认为CAMERASTREAM。 |
x | Float | 坐标x,归一化百分比,画布上该画面左上角的横坐标的相对值,范围是 [0.0,1.0]。从左到右布局,0.0在最左端,1.0在最右端,小数取值范围在float内,自定义布局场景下填写本字段。 |
y | Float | 坐标y,归一化百分比,画布上该画面左上角的纵坐标的相对值,范围是 [0.0,1.0]。从上到下布局,0.0在最上端,1.0在最下端,小数取值范围在float内,自定义布局场景下填写本字段。 |
width | Float | 窗格宽,归一化百分比,小数取值范围在float内,自定义布局场景下填写本字段。 |
height | Float | 窗格高,归一化百分比,小数取值范围在float内,自定义布局场景下填写本字段。 |
zorder | Integer | 叠放顺序,0为最底层,1层在0层之上,以此类推,最大支持25层,自定义布局场景下填写本字段。 |
crop_mode | String | 裁剪模式,自定义布局场景下填写本字段,支持两种模式:
|
filling_policy | String | 填充策略,仅限屏幕共享模板(包括screen_share_right、screen_share_left)场景下填写本字段,支持两种模式:
|
参数 | 参数类型 | 描述 |
|---|---|---|
user_id | String | 需要设置背景图的用户ID |
image_uri | String | 需要设置背景图的地址,图片先上传obs,格式s3://bucket/object,如:s3://rtc-bucket-cn-north-4/img/testImg.jpg |
状态码:400
参数 | 参数类型 | 描述 |
|---|---|---|
X-request-Id | String | 此字段携带请求ID号,以便任务跟踪。 |
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 错误码 |
error_msg | String | 错误描述 |
状态码:404
参数 | 参数类型 | 描述 |
|---|---|---|
X-request-Id | String | 此字段携带请求ID号,以便任务跟踪。 |
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 错误码 |
error_msg | String | 错误描述 |
状态码:500
参数 | 参数类型 | 描述 |
|---|---|---|
X-request-Id | String | 此字段携带请求ID号,以便任务跟踪。 |
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 错误码 |
error_msg | String | 错误描述 |
请求示例
创建一个合流录制任务。房间号:room001,输出流:720p,帧率:15,码率:2.26Mbps,视频布局为九宫格,最长空闲频道时间:30秒,录制规则id:5f5e172b9016ed5b0961a43
POST https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/mix-stream-jobs { "mix_param" : { "room_id" : "room001", "encode_template" : "1280x720_15_2260", "max_idle_time" : 30, "layout_template" : "nine_grids_view" }, "record_param" : { "record_rule_id" : "5f5e172b9016ed5b0961a43" } }创建一个合流录制任务,视频布局为屏幕共享模板,主视图在右边,主视图显示共享屏幕
POST https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/mix-stream-jobs { "mix_param" : { "room_id" : "room001", "encode_template" : "1280x720_15_2260", "max_idle_time" : 30, "layout_template" : "screen_share_right", "layout_panes" : [ { "id" : 1, "user_id" : "", "video_type" : "SCREENSTREAM", "filling_policy" : "SHARED_SCREEN" } ] }, "record_param" : { "record_rule_id" : "5f5e172b9016ed5b0961a43" } }创建一个合流录制任务,视频布局为屏幕共享模板,主视图在右边,主视图显示摄像头
POST https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/mix-stream-jobs { "mix_param" : { "room_id" : "room001", "encode_template" : "1280x720_15_2260", "max_idle_time" : 30, "layout_template" : "screen_share_right", "layout_panes" : [ { "id" : 1, "user_id" : "user1", "video_type" : "CAMERASTREAM", "filling_policy" : "FIXED_USER" } ] }, "record_param" : { "record_rule_id" : "5f5e172b9016ed5b0961a43" } }创建一个合流录制任务,视频布局为自定义布局
POST https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/mix-stream-jobs { "mix_param" : { "room_id" : "room001", "encode_template" : "1280x720_15_2260", "max_idle_time" : 30, "layout_template" : "custom", "layout_panes" : [ { "id" : 1, "user_id" : "user1", "video_type" : "CAMERASTREAM", "x" : 0, "y" : 0, "width" : 0.666, "height" : 0.333, "crop_mode" : "KEEP_RATIO_CROP" }, { "id" : 2, "user_id" : "user2", "video_type" : "CAMERASTREAM", "x" : 0.666, "y" : 0, "width" : 0.333, "height" : 0.666, "crop_mode" : "KEEP_RATIO_CROP" } ] }, "record_param" : { "record_rule_id" : "5f5e172b9016ed5b0961a43" } }
响应示例
状态码:201
任务创建成功,返回job的概要信息
{
"job_id" : "607824b4fa163e19fe301cc817dda855",
"stream_name" : "m_607824b4fa163e19fe301cc817dda855_gigu",
"app_id" : "123456789abcdefghijklmno",
"room_id" : "gigu",
"mix_param" : {
"room_id" : "gigu",
"encode_template" : "1920x1080_30_4620",
"max_idle_time" : 0,
"layout_template" : "nine_grids_view"
},
"record_param" : {
"record_rule_id" : "5f5e172b9016ed5b0961a43"
},
"create_time" : "2021-04-16T16:22:44Z",
"update_time" : "2021-04-16T16:22:44Z",
"state" : "INIT",
"start_time" : "2021-04-16T16:22:44Z",
"stop_time" : "0001-01-01T00:00:00Z"
} 状态码:400
创建合流任务失败,语义有误,当前请求无法被服务器理解,或参数有误
{
"error_code" : "RTC.00001003",
"error_msg" : "InvalidParameterValue"
} 状态码:404
app编号不存在
{
"error_code" : "RTC.00001003",
"error_msg" : "InvalidParameterValue"
} 状态码:500
创建合流任务失败,服务器错误
{
"error_code" : "RTC.00002xxx",
"error_msg" : "InternalError"
} 状态码
状态码 | 描述 |
|---|---|
201 | 任务创建成功,返回job的概要信息 |
400 | 创建合流任务失败,语义有误,当前请求无法被服务器理解,或参数有误 |
404 | app编号不存在 |
500 | 创建合流任务失败,服务器错误 |
错误码
请参见错误码。

