声网 Agora Native/Web SDK 3.0上线

我们近期发布了 Agora Native SDK 3.0 与 Agora Web SDK 3.0.2 版本,涉及平台包括  Android、iOS、macOS、Windows 和 Web在该版本对通信场景采用了全新的系统架构,并升级了通信和直播场景下的 last mile 网络策略。在带宽不足时,新的网络策略能充分利用上下行有限带宽提升有效码率,从而增强弱网对抗能力,极大提升了弱网情况下通信和直播场景的终端用户体验。

 

由于新版本 SDK 通信场景下采用了新的系统架构,为保证新老版本通信用户的互通兼容,我们使用了回退机制。如果频道内有老版本通信用户加入,则新版本终端用户会回退成老版本通信。一旦回退,频道内所有用户都无法享受新版本带来的体验提升。因此我们强烈推荐同步升级所有终端用户到新版本。

 

我们在此之前已经发布了本地服务端录制 SDK 3.0。为确保可以享受全新架构和网络策略优化带来的好处,使用本地服务端录制的用户,请务必同步升级本地服务端录制 SDK 至 3.0.0 版本。

新版本新特性

 1. 多频道管理(Native)

声网 Agora SDK 支持多频道功能,且频道数量无上限,可以实现更丰富的场景,例如超级小班课。所谓超级小班课,就是将原有的“一个主讲老师,百名学生听课”的直播大班拆分为多个小班(即多频道),每个小班由数名学生组成,小班中的学生既可以看到主讲老师授课,又能进行班内交流,比如进行小组讨论。

为方便用户在同一时间加入多个频道,该版本新增了 RtcChannel 和 IRtcChannelEventHandler 类。通过创建多个 RtcChannel 对象,用户可以加入各 RtcChannel 对象对应的频道中,实现多频道功能。

加入多个频道后,用户可以同时接收多个频道的流,但只能同时在一个频道内发单视频源流。该功能适用于用户需要同时接收多个频道的流,或频繁切换频道发流的场景。详细的集成步骤和注意事项,请在声网文档中心搜索“加入多频道”。

2. 视频原始数据(Native)

为方便开发者获取传输各阶段的视频原始数据,满足更多场景需求,该版本在 IVideoFrameObserver 类中新增如下 C++ 回调接口: 

  • onPreEncodeVideoFrame:获取前处理后、编码前的本地视频原始数据。该方法适用于有视频前处理需求的开发场景。

  • getSmoothRenderingEnabled:设置是否对获取的视频数据进行平滑处理。平滑处理后的视频帧,出帧时间间隔会更均匀,因此视频自渲染的体验更好。

3. 调节本地播放的指定远端用户音量(Native)

在多人音视频交互的场景下,总会听到有的人声音大,有的人声音小,每次都需要提醒对方,影响会议进度或通话体验。为了提升用户体验,3.0新增 adjustUserPlaybackSignalVolume 方法,用以调节本地用户听到的指定远端用户的音量。通话或直播过程中,你可以多次调用该方法,来调节多个远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。

4. 媒体播放器组件(Native)

为丰富直播玩法,我们发布了媒体播放器组件,支持主播在直播过程中,播放本地或在线媒体资源,并同步分享给频道内所有用户。详情请在声网文档中心搜索“媒体播放器组件”。 

5. 自采集视频支持双流模式(Web)

对使用videoSource 属性创建的视频流,该版本支持开启双流模式 (enableDualStream)。双流指视频大流和视频小流。发布端可以开启双流模式,同时发送大流和小流。订阅端可以根据自己的网络情况选择接收大流或小流。

6. 跨频道媒体流转发(Web)

跨频道媒体流转发,指将主播的媒体流转发至其他直播频道,实现主播与其他频道的主播实时互动的场景。该版本新增如下方法,通过将源频道中的媒体流转发至目标频道,实现跨直播间连麦功能: 

  • startChannelMediaRelay

  • updateChannelMediaRelay

  • stopChannelMediaRelay

在跨频道媒体流转发过程中,SDK 会通过 Client.on("channel-media-relay-state") 和 Client.on("channel-media-relay-event") 回调报告媒体流转发的状态和事件。 该功能的实现方法详见声网文档中心“跨直播间连麦”。

7. 屏幕共享可分享背景音(Web)

在 StreamSpec 接口中新增 screenAudio 属性,支持屏幕共享的同时分享本地播放的背景音,详见文档中心“分享音频”。

8. 美颜(Web)

Web 浏览器端新增支持美颜了。在新版本中,我们新增了方法 setBeautyEffectOptions,支持美白、磨皮、红润肤色等美颜效果。 

9. 推流水印(Web)

一些用户会出于内容版权等原因,在视频画面中增加水印。新版本的 Web SDK 在 LiveTranscoding 接口中新增 images 属性,支持将在线 PNG 图片作为水印添加到正在进行的推流直播中。 

10. 加密/解密失败通知(Web)

新增 Client.on("crypt-error") 回调,在发布或订阅流时出现加解密错误时可以收到通知。

版本改进

1.  音频编码属性

为满足更高音质需求,该版本调整了直播场景下 AUDIO_PROFILE_DEFAULT (0) 对应的音频编码属性,详见文档中心。

2. 镜像模式

为提升视频镜像的使用体验,该版本对以下接口进行了变动: 

  • 视频编码镜像:在 VideoEncoderConfiguration 结构体中,新增 mirrorMode 成员,方便设置本地视频编码的镜像模式,即远端看本地是否镜像。

  • 视频渲染镜像:在 VideoCanvas 结构体中,新增 mirrorMode 成员,方便你在调用 setupLocalVideo 初始化本地视图时,设置本地看本地是否镜像,以及调用 setupRemoteVideo 初始化远端视图时,设置本地看远端是否镜像;同时在 setLocalRenderMode 和 setRemoteRenderMode 方法中新增 mirrorMode 参数,支持在通话中更新本地看本地,或本地看远端的镜像模式。

3. 质量透明

为方便开发者获取更多通话统计信息,该版本在 RtcStats 类中新增 gatewayRtt、memoryAppUsageRatio、memoryTotalUsageRatio 和 memoryAppUsageInKbytes 成员,方便更好地监控通话的质量和通话过程中的内存使用情况。

4. 其他提升

该版本自动开启直播场景下 Native SDK 与 Web SDK 的互通,并废弃原有的 enableWebSdkInteroperability 方法。

5. 远端视频状态(Web)

新增 Client.on("enable-local-video") 和 Client.on("disable-local-video") 回调,当远端 Native SDK 用户通过 enableLocalVideo 方法打开或关闭自己的视频采集时,Web 端可以收到通知。

6. 离线原因(Web)

在 Client.on("peer-leave") 回调中增加 reason 参数,当远端用户掉线时可以通过该参数值了解具体原因。

升级提示

新版本的通信场景下的 API 方法,以及日志默认保存路径已经改变。同时,新版本也新增和替换了部分 API,具体详情,请点击「阅读原文」访问声网官方文档。如在升级、集成中遇到问题,可在 RTC 开发者社区提问。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章