文档反馈
文档反馈

V3.9.0 (20210108)

网易云信于 2021 年 1 月 8 日发布了 NERTC SDK 最新版本 V3.9.0,该版本是重大升级版本,在音视频能力和平台支持方面均有显著优化。新增 Flutter SDK、NERTC SDK 的纯音频包,另外支持辅流形式实现屏幕共享、支持自定义视频编码分辨率、直播模式下支持房间角色的能力等等。同时在技术能力上也有一定技术优化,例如服务器、引擎全链路支持自研的软件编码 NEVC 协议、支持视频降噪等等。

新增功能

序号 新增功能 功能描述 涉及平台 相关文档
1 支持主动获取网络连接状态 可以通过 getConnectionState 接口主动获取网络连接状态。
适用于以下场景:
  • 在 App 异常重启时,可以调用本接口主动获取当前客户端与服务器的连接状态,以做到本地与服务器状态的对齐。
  • 在实时音视频通话等业务场景中,主动获取房间的网络连接状态,以此完成上层业务逻辑。
  • Android
  • Web
getConnectionState
2 支持辅流形式的屏幕共享 支持通过辅流形式实现屏幕共享,单独为屏幕共享开启一路上行的视频流,摄像头的视频流作为主流,屏幕共享的视频流作为辅流,两路视频流并行,同时上行摄像头和屏幕两路画面。
  • Android
  • iOS
  • macOS
  • Windows
屏幕共享
3 支持设置屏幕共享的内容类型 startScreenCapture 接口新增参数 contentPrefer,用于设置屏幕共享画面为动画优先或者是细节优先,便于用户在不同场景设置不同的策略倾向。
  • Android
  • iOS
  • macOS
  • Windows
startScreenCapture
4 支持自定义视频编码分辨率 NERtcVideoConfig 中增加参数 width 和 height,用于自定义设置视频编码分辨率。
  • Android
  • iOS
  • macOS
  • Windows
设置视频属性
5 直播模式下支持设置房间角色 直播场景下可以通过接口 setClientRole 设置用户角色。默认情况下用户以主播角色加入房间。
  • Android
  • iOS
  • macOS
  • Windows
  • Web
setClientRole
6 支持自定义音频输入 新增第三方音频数据输入接口,支持自定义音频采集功能,即开发者可以向 NERTC SDK 提供自定义的音频输入源数据,并由 NERTC SDK 进行编码推流。
  • Android
  • iOS
  • macOS
  • Windows
  • Web
自定义音频采集
7 音频支持AI降噪能力 setParameters 新增参数 KEY_AUDIO_AI_NS_ENABLE,用于开启 AI 降噪。
NERTC SDK 自研 AI 降噪算法,开启 AI 降噪之后,在嘈杂的环境中可以针对背景人声、键盘声等非稳态噪声进行定向降噪,同时也会提升对于环境稳态噪声的抑制,保留更纯粹的人声。
  • Android
  • iOS
  • macOS
  • Windows
setParameters
8 NERTC SDK的纯音频包 纯音频包 SDK 与标准能力 SDK 相比,移除了视频相关的能力模块,适用于纯音频场景。
  • Android
  • iOS
  • macOS
  • Windows
NERTC SDK(音频)
9 本地服务端录制 SDK 通过 NERecord SDK 提供本地服务端录制功能,可以在本地 Linux 服务器部署,支持一对一或多人的音视频通话过程录制。适用于金融私有化录制场景、视频会议私有化录制场景。 - 本地服务端录制
10 Flutter SDK Flutter SDK 基于 iOS、Android 平台的 SDK 进行封装。 - 实现音视频通话(Flutter)

技术优化

序号 新增功能 功能描述
1 服务器、引擎全链路支持自研的软件编码 NEVC 协议
  • 支持桌面端的软件编解码、支持NE264、NEVC 的能力协商等功能,相较H264,提高了编码压缩效率,同等码率下提升视频整体清晰度。
  • 服务器全链路支持 NEVC,包括视频流的媒体转发、互动直播、录制。
2 基于深度学习的屏幕共享优化 通过深度学习技术优化屏幕共享后处理,编码器可以通过屏幕场景判断对低帧率视频做后处理策略,整体提升文字屏幕共享场景的用户体验。
3 支持视频降噪 新增支持视频降噪,在暗光场景对视频的清晰度和舒适度有明显提升,通过前处理的方式提升用户体验。
4 音频抗性优化 优化后,上下行抗丢包达到 80%。

已知问题

辅流屏幕共享的 SDK 版本限制:

API 变更

当前版本的 API 变更清单如下。

接口/方法 描述 Android iOS Windows macOS Web
setClientRole 直播模式下设置房间角色,可设置为主播或观众。 🟢 🟢 🟢 🟢 🟢
onClientRoleChange 本地切换角色之后,通知当前角色状态。 🟢 🟢 🟢 🟢 🟢
setExternalAudioSource 启动自定义音频输入。 🟢 🟢 🟢 🟢
pushExternalAudioFrame 将外部音频数据帧推送给内部引擎。 🟢 🟢 🟢 🟢
setMixedAudioFrameParameters 设置采集和播放后的混合后的采样率。 🟢 🟢 🟢 🟢
onMixedAudioFrame 音频采集与播放混合后数据帧回调。 🟢 🟢 🟢 🟢
onPlaybackAudioFrameBeforeMixingWithUserID 某一远端用户的原始音频帧回调。 🟢 🟢 🟢 🟢
setAudioProcessObserver 在 SPEECH 模式下检测啸叫现象进行回调。 🟢 🟢 🟢 🟢
setAudioOutput 设置音频输出设备 🟢
createStream 新增参数 audioProcessing,用于操作 3A 能力。 🟠
getConnectionState 主动获取网络连接状态。 🟢 🟢
startScreenCapture Android:新增字段 contentPrefer 配置屏幕共享功能的编码策略倾向, 可以根据静态或动态内容进行配置。
iOS:新增 startScreenCapture 接口,用于开启辅流形式的屏幕共享。
🟠 🟢
stopScreenCapture 关闭辅流形式的屏幕共享。 🟠 🟢
setupLocalSubStreamVideoCanvas 设置本端的辅流视频画布。 🟢 🟢 🟢 🟢
setupRemoteSubStreamVideoCanvas 设置远端的辅流视频画布。 🟢 🟢 🟢 🟢
setLocalRenderSubStreamScaleMode 设置本端的辅流渲染缩放模式。 🟢 🟢 🟢
setRemoteRenderSubStreamVideoScaleMode 设置远端的屏幕共享辅流视频渲染缩放模式。 🟢 🟢 🟢
subscribeRemoteSubStreamVideo 订阅或取消订阅远端的屏幕共享辅流视频,订阅之后才能接收远端的辅流视频数据。 🟢 🟢 🟢 🟢
onUserSubStreamVideoStart 远端用户开启屏幕共享辅流通道的回调。 🟢 🟢 🟢
onUserSubStreamVideoStop 远端用户停止屏幕共享辅流通道的回调。 🟢 🟢 🟢
onNERtcEngineUserSubStreamDidStartWithUserID 远端用户开启屏幕共享辅流通道的回调。 🟢
onNERtcEngineUserSubStreamDidStop 远端用户开启屏幕共享辅流通道的回调。 🟢
setParameters 新增NERtcParameters.KEY_AUDIO_AI_NS_ENABLE,打开后支持AI降噪能力。 🟠 🟠 🟠 🟠
setExternalVideoSource 新增isScreen字段,用于配置视频源是否为屏幕共享内容。外部输入视频源是屏幕共享时默认使用辅流通道,非屏幕共享时使用主流通道,此时与 Camera 互斥。 🟠
startScreenCaptureByScreenRect 取屏相关接口和enableLocalVideo打开的本地视频隔离,取屏单独定义为辅流;与主流可以同时共存,但是辅流内部接口仍然只能打开其中一个。 🟠
startScreenCaptureByDisplayId 取屏相关接口和enableLocalVideo打开的本地视频隔离,取屏单独定义为辅流;与主流可以同时共存,但是辅流内部接口仍然只能打开其中一个。 🟠
NERtcVideoEncodeConfiguration 在类 NERtcVideoEncodeConfiguration 增加两个属性字段:width 和 height,用户可以设置任意编码分辨率。 🟠 🟠
NERtcVideoConfig 在struct NERtcVideoConfig 中添加两个字段:uint32_t width 和 uint32_t height;用户可以设置任意编码分辨率,当二者之中有一个为 0 的时候,表示使用老的 profile。 🟠 🟠
×

反馈成功

非常感谢您的反馈,我们会继续努力做得更好。