视频流回退
更新时间: 2024/03/15 17:25:07
实际场景中,网络状况并非始终处于理想状态,当网络信号弱、链路不稳定时,通常会造成音视频通信的延时和丢包等问题,从而造成通话质量下降等现象,影响用户的音视频体验。网易云信 NERTC SDK 支持视频流回退的相关方法,可以在弱网环境下自动将视频主流从大流切换为小流,或者将媒体流回退为音频流,优先保障通话流畅平稳、维持用户体验;在网络环境恢复时,音频流会自动切换回音视频媒体流、小流切换回大流,提升音视频通话质量。
注意事项
- 在实现视频流回退机制前,请确保已在您的项目中实现基本的音视频通话流程。
- 请在加入房间前设置视频流回退的相关方法。
- 视频流回退功能仅对主流视频有效。
实现方法
发流端
-
调用
enableDualStreamMode
方法开启大小流模式。 -
调用
setLocalPublishFallbackOption
方法。将 option 设置为NERtcStreamFallbackOptions.audioOnly
即可指定弱网环境下本地发布的媒体流自动回退为音频流。 -
加入房间后,当网络状态不理想、无法同时维持视频流和音频流质量时,SDK 会自动停止发布视频流,只发布音频流。当网络状态恢复时,音频流会切换回音视频媒体流。
本地发布的流从媒体流切换到音频流,或从音频流切换到媒体流时,SDK 会触发
onLocalPublishFallbackToAudioOnly
回调,报告当前发布的流的类型。
接收端
- 调用
setRemoteSubscribeFallbackOption
方法设置弱网环境下接收媒体流的回退选项。- 设置为
videoStreamLow
,则下行网络较弱时,只接收视频小流。 - 设置为
audioOnly
,则下行网络较弱时,先尝试只接收视频小流。如果网络环境无法显示视频,则只接收音频流。
- 设置为
- 加入房间后,如果弱网环境下触发了音视频流回退,用户接收到的流从媒体流切换到音频流,或从音频流切换到媒体流时,SDK 会触发
onRemoteSubscribeFallbackToAudioOnly
回调,报告当前接收流的回退状态。
示例代码
//开启视频双流模式。
await _engine.enableDualStreamMode(true);
//发送端指定弱网环境下本地发布的媒体流自动回退为音频流。
await _engine.setLocalPublishFallbackOption(NERtcStreamFallbackOptions.audioOnly);
//接收端指定弱网环境下先尝试接收小流;若当前网络环境无法显示视频,则只接收音频流。
await _engine.setRemoteSubscribeFallbackOption(NERtcStreamFallbackOptions.audioOnly);
此文档是否对你有帮助?