旁路推流

更新时间: 2023/07/13 02:47:56

NERTC SDK 支持云端音视频混流和 RTMP 旁路推流,可以将实时音视频流转为标准直播流,并将其从网易云信实时音视频云推送到第三方 CDN(Content Delivery Network)或网易云信直播服务,这一过程称为旁路推流。

推流到 CDN 后,基于 CDN 的大规模内容分发,观众可通过 URL 拉流地址使用播放器或 Web 端浏览器直接在线观看直播,也可以加入音视频房间进行实时连麦。当房间中有多个主播时,需要将多个直播流组合成单流,并设置直播流的推流布局,在直播画布中显示主播们的实时画面。

功能描述

在您的项目中实现音视频通话后,可以将房间画面进行旁路推流。网易云信可以将您的媒体流在云端进行混流、转码、合图等操作,生成一路视频流,并将其推送到网易云信直播服务中进行大规模内容分发,以便观众直播观看。

  • 房间内首个终端加入自动触发转码,房间内无终端时停止转码。
  • 直播流支持 RTMP 协议。

注意事项

  • 如果需要在互动直播场景中使用 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"
}

此文档是否对你有帮助?
有帮助
去反馈
  • 功能描述
  • 注意事项
  • 实现方式
  • 配置推流任务信息
  • 配置推流布局
  • 音视频流配置
  • 示例