2024/10/25 15:25:32
实现极速直播
本文介绍如何集成声网实时互动 SDK,在一个基础的音视频互动基础上进行少量代码修改,即可实现一个极速直播 App。
极速直播是区别于互动直播的一种直播场景,两者的区别在于观众端的延时级别:
- 互动直播:观众端的延时级别为超低延时,以便满足主播和观众需要频繁进行音视频互动的需求。
- 极速直播:观众端的延时级别为低延时,可以满足主播与观众较低频率的音视频互动,或者回应观众文字、弹幕及打赏信息。
更多关于极速直播的延时指标、同步性、互动体验以及费用介绍,详见直播场景区别和计费策略。
前提条件
已在你的项目中实现基本的实时音视频功能。详见实现音视频互动。
实现步骤
- C++
- C#
将直播场景下观众端的延时级别修改为低延时,即可将一个互动直播修改为极速直播,有以下两种实现方式:
- 在调用
joinChannel
[2/2] 加入频道时,在options
参数中将clientRoleType
参数设置为CLIENT_ROLE_AUDIENCE
(观众);将audienceLatencyLevel
参数设置为AUDIENCE_LATENCY_LEVEL_LOW_LATENCY
(低延时)。 - 在加入频道后,调用
setClientRole
[2/2] 方法,将role
参数设置为CLIENT_ROLE_AUDIENCE
(观众);将options
参数设置为AUDIENCE_LATENCY_LEVEL_LOW_LATENCY
(低延时),示例代码如下:
C++
ChannelMediaOptions option;
// 设置频道场景为直播
option.channelProfile = CHANNEL_PROFILE_LIVE_BROADCASTING;
// 设置用户角色为观众
option.clientRoleType = CLIENT_ROLE_AUDIENCE;
// 将观众端延时级别设为低延时
option.audienceLatencyLevel = AUDIENCE_LATENCY_LEVEL_LOW_LATENCY;
// 自动订阅频道内的音频流
option.autoSubscribeAudio = true;
// 自动订阅频道内的视频流
option.autoSubscribeVideo = true;
// 填入你在控制台获取的临时 Token 加入频道
int ret = m_rtcEngine->joinChannel(token, cs2utf8(strChannelName).c_str(), 0, option);
将直播场景下观众端的延时级别修改为低延时,即可将一个互动直播修改为极速直播,有以下两种实现方式:
- 在调用
JoinChannel
[2/2] 加入频道时,在options
参数中将clientRoleType
参数设置为CLIENT_ROLE_AUDIENCE
(观众);将audienceLatencyLevel
参数设置为AUDIENCE_LATENCY_LEVEL_LOW_LATENCY
(低延时)。 - 在加入频道后,调用
SetClientRole
[2/2] 方法,将role
参数设置为CLIENT_ROLE_AUDIENCE
(观众);将options
参数设置为AUDIENCE_LATENCY_LEVEL_LOW_LATENCY
(低延时),示例代码如下:
C#
ChannelMediaOptions options = new ChannelMediaOptions();
// 将频道场景设置为直播。
options.channelProfile.SetValue(CHANNEL_PROFILE_TYPE.CHANNEL_PROFILE_LIVE_BROADCASTING);
// 将用户角色设置为主播或观众。此处以观众为例。
options.clientRoleType.SetValue(CLIENT_ROLE_TYPE.CLIENT_ROLE_AUDIENCE);
// 对于极速直播下的观众,需设置用户级别为 AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY;对于主播,无需此设置。
options.audienceLatencyLevel.SetValue(AUDIENCE_LATENCY_LEVEL_TYPE.AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY);
后续步骤
本文的示例使用了临时 Token 加入频道。在测试或生产环境中,为确保通信安全,声网推荐使用 Token 服务器来生成 Token,详见使用 Token 鉴权。
参考信息
示例项目
声网提供了开源的示例项目供你参考,你可以前往下载或查看其中的源代码。