创建旁路推流任务
更新时间: 2024/03/25 11:00:42
当需要使用互动直播功能时,必须要设置推流任务。创建推流任务可以调用服务端接口进行设置,也可以调用客户端接口进行设置。
创建推流任务时,您还可以开启直播视频录制。录制的视频默认存储在点播服务中,您可以通过点播的相关接口查看并下载视频文件。详细信息请参考点播媒资管理。
限制说明
- 设置推流画面布局时,用户窗口边界不能超出 canvas 画布。
- 视频互动的画面布局中,最多 7 人参与;纯语音互动最多 21 人。如果人数超限,可能会影响正常的音视频服务。
- 同一个音视频房间(即同一个 channelid)可以创建 6 个不同的推流任务。
- 纯音频直播场景下,无需设置用户画面布局,可以将 users 中 x、y、width、height 等参数设置为 0。
URL
-
请求方法:POST
-
URL:
网易云信为该功能提供以下两个 API 请求地址,使用 V2 地址需在 URL 中指定
cid
,使用 V3 地址需在 URL 中指定cname
,您可以根据业务需求调用任一接口。https://logic-dev.netease.im/v2/api/rooms/{cid}/task
https://logic-dev.netease.im/v3/api/rooms/task?cname={cname}
URL 中参数说明:
参数名称 | 类型 | 示例 | 描述 |
---|---|---|---|
cid | int64 | 6207760637435905 | 房间 ID。该 ID 为创建房间接口调用成功后返回的房间 ID。 仅在调用 V2 接口时需要设置。 |
cname | String | abc | 房间名称。仅在调用 V3 接口时需要设置。 |
接口请求频率
默认上限为 50 次/秒,若请求频率超出限制,可能会返回 429 错误码。
若您需要上调上限,请参考如何处理调用服务端 RESTful API 超出频率限制。
请求参数
-
请求中 Header 的设置请参考请求结构描述。
-
请求中 Body 须为 JSON 格式,参数说明如下:
参数名称 |
类型 |
是否必选 |
示例 |
描述 |
---|---|---|---|---|
version | Integer | 必选 | 1 | 推流任务版本,此处请设置为 1。 |
taskId | String | 必选 | stream_1 | 自定义的推流任务 ID。请保证此 ID 唯一,为字母数字下划线组成的 64 位以内的字符串。 |
streamUrl | String | 必选 | rtmp://test.url | 推流地址,例如 rtmp://test.url 。此处的推流地址可设置为网易云信直播产品中服务端 API 创建直播频道的返回参数 pushUrl。 |
layout | Json | 必选 | - | 互动直播中的布局相关参数。纯音频场景下 users 中 x、y、width、height 等用户布局配置参数可设置为 0。 详细参数说明请参考 layout 。布局参数的配置方式及典型配置示例请参考旁路推流画面布局。 |
record | Boolean | 可选 | true | 旁路推流是否需要进行音视频录制。 |
hostUid | Integer | 可选 | 111 | 主播的 UID。 |
config | Json | 可选 | - | 音视频流配置。 详细参数说明请参考 config 。 |
extraInfo | String | 可选 | abc | 自定义的媒体补充增强信息。 |
watermark | JSON | 可选 | 无 | 水印配置。支持添加文字水印、图片水印和时间戳水印。添加水印可以防止直播内容被未授权的人盗用、侵权,保护直播内容的版权。详细参数说明请参见watermark 。 |
返回参数
参数名称 | 类型 | 示例 | 描述 |
---|---|---|---|
code | int | 200 | 状态码。 |
errmsg | String | invalid params | 错误详情。仅在状态码为 200 以外的其他状态中返回。errmsg 仅供参考,请勿基于 errmsg 实现业务逻辑。 |
示例
请求示例
{
"version": 1,
"taskId": "stream_1",
"streamUrl": "rtmp://test.url",
"record": true,
"hostUid": 123,
"layout": {
"canvas": {
"width": 720,
"height": 640,
"color": 16777215
},
"users": [{
"uid": 66601,
"x": 0,
"y": 0,
"width": 360,
"height": 640,
"adaption": 1,
"pushAudio": true,
"pushVideo": true,
"zOrder": 1
}, {
"uid": 66602,
"x": 360,
"y": 0,
"width": 360,
"height": 640,
"adaption": 1,
"pushAudio": true,
"pushVideo": true,
"zOrder": 1
}],
"subStreams": [{
"uid": 66601,
"x": 0,
"y": 640,
"width": 360,
"height": 640,
"adaption": 1,
"pushVideo": true,
"zOrder": 1
}, {
"uid": 66602,
"x": 360,
"y": 640,
"width": 360,
"height": 640,
"adaption": 1,
"pushVideo": true,
"zOrder": 1
}],
"images": [{
"url": "www.163.com/66601.jpg",
"x": 0,
"y": 0,
"width": 360,
"height": 640,
"adaption": 1,
"zOrder": 0
}, {
"url": "www.163.com/66602.jpg",
"x": 360,
"y": 0,
"width": 360,
"height": 640,
"adaption": 1,
"zOrder": 0
}]
},
"config": {
"singleVideoNoTrans": true,
"audioParam": {
"bitRate": 64
}
}
}
正常返回示例
{
"code": 200
}
错误码
-
header 中的状态码:
状态码列表请参考 header 中的 HTTP 状态码。
-
body 中的错误码(code)
该接口在 HTTP Body 中返回错误码(code),错误码列表请参考业务错误码。
此文档是否对你有帮助?