实现旁路推流
更新时间: 2024/03/25 11:00:43
本文主要介绍如何实现旁路推流。
注意事项
- 如果需要在互动直播场景中使用 SEI(Supplemental Enhancement Information)功能,在服务端创建推流任务时,需要通过 hostuid 设置主播的 UID。互动直播场景中,仅支持解析主播端的 SEI 自定义数据。
- 同一个音视频房间(即同一个 channelId)可以创建 6 个不同的推流任务。
- 服务端创建旁路推流任务接口的
layout
参数为必选参数。纯音频直播场景下,无需设置用户画面布局,可以将 users 中 x、y、width、height 等参数设置为 0。
实现方式
实现音视频通话的相关流程之后,可以调用服务端接口创建旁路推流任务发起推流任务。
配置推流任务信息
创建推流任务时,需要配置任务 ID、推流地址等推流参数信息,还可以开启直播视频录制。
录制的视频默认存储在点播服务中,您可以通过点播的相关接口查看并下载视频文件。详细信息请参考点播媒资管理。
推流任务信息相关参数说明:
参数名称 | 描述 |
---|---|
taskId | 自定义的推流任务ID。请保证此ID唯一。字母数字下划线组成的 64 位以内的字符串。 |
streamUrl | 推流地址,例如 rtmp://test.url。 此处的推流地址可设置为网易云信直播产品中服务端 API 创建直播频道的返回参数 pushUrl。 |
record | 旁路推流是否需要进行音视频录制。 |
version | 推流任务版本,此处请设置为 1。 |
hostuid | 主播的 UID。 |
extraInfo | 自定义的媒体补充增强信息。 |
配置推流布局
通过 layout
参数可以设置互动直播的画面布局,即自定义房间画面的各路视频布局方式,例如调整画布(Canvas)大小和颜色、各路视频的图像大小、位置等。
当房间中只有一路视频流时,您也可以设置视频透传。
音视频流配置
config
参数用于配置音视频流编码参数等设置。
-
通过
singleVideoNoTrans
参数设置视频透传。singleVideoNoTrans
参数设置为 true 表示开启视频透传,开启后,如果房间中只有一路视频流输入,则不对输入视频流进行转码,不遵循转码布局,直接推流 CDN。视频透传默认为关闭状态。 -
通过
subAllAudio
参数设置音频流订阅。subAllAudio
参数设置为 true 表示互动直播中订阅所有用户的音频流,房间中所有成员的音频流均会被混流后推往 CDN。 -
通过
audioParam
参数设置音频编码参数。- 通过
bitRate
字段设置音频推流码率。单位为 kbps,取值范围为 10~192。语音场景建议设置为 64 及以上码率,音乐场景建议设置为 128 及以上码率。 - 通过
sampleRate
字段设置音频推流采样率。单位为Hz,默认采样率为 48 kHz。 - 通过
channels
字段设置音频推流声道数,默认为2,即双声道。 - 通过
codecProfile
字段设置音频编码规格,默认为0,即 LC-AAC 规格,表示基本音频编码规格。
- 通过
示例
服务端接口创建旁路推流任务的请求示例如下:
json {
"version": 1,
"taskId": "new_version",
"streamUrl": "rtmp://test.url",
"record": true,
"hostUid": 123,
"layout": {
"canvas": {
"width": 1280,
"height": 720,
"color": 16777215
},
"users": [{
"uid": 66601,
"x": 0,
"y": 0,
"width": 640,
"height": 720,
"adaption": 1,
"pushAudio": true,
"pushVideo": true,
"zOrder": 1
}],
"subStreams": [{
"uid": 66601,
"x": 0,
"y": 0,
"width": 480,
"height": 360,
"adaption": 1,
"zOrder": 3,
"pushVideo": true,
}],
"images": [{
"url": "www.163.com/test.jpg",
"x": 0,
"y": 0,
"width": 480,
"height": 360,
"adaption": 1
}]
},
"config": {
"singleVideoNoTrans": false,
"subAllAudio": false,
"audioParam": {
"sampleRate": 48000,
"bitRate": 64,
"channels": 2
}
},
"extraInfo": "sei extra info"
}
此文档是否对你有帮助?