实现低延时直播拉流
更新时间: 2025/08/08 11:29:37
本文介绍如何使用网易云信 NERTC SDK 实现低延时视频直播场景。
功能简介
网易云信 NERTC SDK 低延迟直播(Low-Latency Streaming,LLS)专门为提供极致的直播体验而设计,具备超低延迟、超低卡顿、超清画质、首帧秒开、能抗极端弱网等优秀特点,具备低延时、强同步、高质量的功能特点。是现代直播场景中的必备工具。
相较于使用传统 CDN 直播的方式,NERTC SDK 低延迟直播是基于网易云信全球智能路由网络 WE-CAN(Communications Acceleration Network)、高质量分发服务以及全链路自研传输协议,可以为直播提供延时更低、质量更优、链路更加稳定的直播服务。
适用场景
- 电商直播:主播可实时回应观众问题、反馈互动信息,商品拍卖、秒杀促销等活动体验更佳,显著提升观众的 即看即买 购物体验和转化率。
- 在线教育:教师能够实时解答学生疑问,进行答题互动、奖励反馈和白板协作,营造接近线下课堂的实时互动氛围,提升教学效果和学习体验。
- 秀场互动:主播能即时回应观众互动,实时弹幕和礼物打赏显示无延迟,大幅提升直播间氛围和互动热度,增强用户粘性和付费意愿。
- 赛事直播:体育比赛、电竞赛事等时效性强的内容能以低延时方式传递,观众可与现场同步体验比赛精彩瞬间,避免因延迟获知比赛结果的尴尬。
- 多人同看:好友们可在直播间一起观看电影、演唱会或赛事,同时进行图文聊天互动,画面与聊天信息同步低延时,打造远程共享观影的沉浸式体验。
关键特性
特性 | 指标 | 优势说明 |
---|---|---|
端到端延时 | 1 秒左右 | 接近实时通话体验,远低于传统直播 10-30 秒延迟 |
抗丢包能力 | 可达 40% | 即使在弱网环境下也能保持流畅观看体验 |
首帧加载 | 500 毫秒内 | 用户打开直播几乎无等待,提升观看体验 |
全球覆盖 | 多区域部署 | 基于 WE-CAN 全球智能路由网络,覆盖全球主要地区 |
准备工作
在开始接入低延时直播功能之前,请确保您已经完成了以下设置:
-
已创建应用并获取 App Key。详细步骤请参考 创建应用并获取 AppKey。
-
已为应用开通以下三项服务:音视频通话 2.0 服务、直播服务和低延时直播功能。详细步骤请参考 开通或试用产品。
-
测试接入阶段,建议在 网易云信控制台 中为指定应用开通调试模式,应用正式上线后再改为安全模式。详细说明请参考 Token 鉴权。
-
已 下载 NERTC SDK。
推荐下载最新版本的 NERTC SDK,SDK 已直接内置低延时直播功能,您无需额外集成单独的低延时直播 SDK。
获取拉流地址
在实现低延时直播功能前,您需要获取拉流地址。具体步骤如下:
-
调用 直播服务端接口,创建一个直播频道。
-
登录 网易云信控制台。
-
在 应用管理 列表中,单击目标应用,进入应用配置页面。
-
在 直播 产品功能设置页面,单击 频道管理 的 子功能配置,进入频道配置页面。
-
找到您创建的频道,并在 操作 列单击 地址。
-
在弹出的页面中,单击 拉流地址(NERTC) 旁的 复制 按钮,一键复制低延时直播拉流地址。
实现低延时直播
开通低延时直播功能后,拉流端可通过以下步骤使用拉流地址实现低延时直播:
-
导入相关类后,调用
init
方法初始化 RTC ENGINE 实例。 -
设置低延时拉流选项。
创建
NERtcJoinChannelOptions
对象,并配置其中的NERtcLowLatencyOptions
参数:enableLowLatency
:设置为true
以启用低延时直播功能。playCanvas
:设置低延时直播视频画布。playTimeout
:设置拉流超时时间(可选,保持默认值时可不设置)。
推荐在
NERtcLowLatencyOptions
中直接设置直播视频的画布,这样能够获得最佳的首帧秒开体验。 如果不在NERtcLowLatencyOptions
中设置画布,您也可以通过监听远端用户加入房间的回调onUserJoined
,在该回调中获取到主播 uid 后,再通过设置远端画布接口setupRemoteVideoCanvas
进行设置。 -
开始拉流。
调用
joinChannel
方法开始拉流,需要设置以下参数:token
:鉴权令牌(如果使用调试模式可以传入空字符串)。channelName
:低延时拉流地址,即您在 上一步 获取的拉流地址。uid
:拉流用户的唯一标识符。
-
结束拉流。
当需要结束拉流时,调用
leaveChannel
方法。
示例代码
使用网易云信 NERTC SDK 实现低延时直播拉流示例代码如下:
Java// 步骤1: 初始化 RTC 引擎
NERtcOption option = new NERtcOption();
NERtcEx.getInstance().init(appContext, appKey, this, option);
// 步骤2: 配置低延时拉流选项
NERtcJoinChannelOptions joinChannelOptions = new NERtcJoinChannelOptions();
joinChannelOptions.lowLatencyOptions = new NERtcLowLatencyOptions();
// 启用低延时直播功能
joinChannelOptions.lowLatencyOptions.enableLowLatency = true;
// 设置视频渲染画布
NERtcVideoView remoteCanvas = findViewById(R.id.render_view_remote);
joinChannelOptions.lowLatencyOptions.playCanvas = remoteCanvas;
// 步骤3: 开始低延时拉流
String channelName = "nertc://xxxxxxxx"; // 从网易云信控制台获取的低延时拉流地址
long uid = 123456; // 用户的唯一标识符
String token = ""; // 鉴权 Token,调试模式下可为空字符串
NERtcEx.getInstance().joinChannel(token, channelName, uid, joinChannelOptions);
// 步骤4: 结束拉流
NERtcEx.getInstance().leaveChannel(); // 退出频道,停止拉流