视频流回退

更新时间: 2024/09/18 16:26:13

实际场景中,网络状况并非始终处于理想状态,当网络信号弱、链路不稳定时,通常会造成音视频通信的延时和丢包等问题,从而造成通话质量下降等现象,影响用户的音视频体验。网易云信 NERTC SDK 支持视频流回退的相关方法,可以在弱网环境下自动将视频主流从大流切换为小流,或者将媒体流回退为音频流,优先保障通话流畅平稳、维持用户体验;在网络环境恢复时,音频流会自动切换回音视频媒体流、小流切换回大流,提升音视频通话质量。

注意事项

  • 在实现视频流回退机制前,请确保已在您的项目中实现基本的音视频通话流程。
  • 请在加入房间前设置视频流回退的相关方法。
  • 视频流回退功能仅对主流视频有效。

实现方法

发流端

  1. 调用 enableDualStreamMode 方法开启大小流模式。

  2. 调用 setLocalPublishFallbackOption 方法。将 option 设置为 kNERtcStreamFallbackAudioOnly 即可指定弱网环境下本地发布的媒体流自动回退为音频流。

  3. 加入房间后,当网络状态不理想、无法同时维持视频流和音频流质量时,SDK 会自动停止发布视频流,只发布音频流。当网络状态恢复时,音频流会切换回音视频媒体流。

    本地发布的流从媒体流切换到音频流,或从音频流切换到媒体流时,SDK 会触发 onLocalPublishFallbackToAudioOnly 回调,报告当前发布的流的类型。

接收端

  1. 调用 setRemoteSubscribeFallbackOption 方法设置弱网环境下接收媒体流的回退选项。
    • 设置 kNERtcStreamFallbackVideoStreamLow,则下行网络较弱时,只接收视频小流。
    • 设置 kNERtcStreamFallbackAudioOnly,则下行网络较弱时,先尝试只接收视频小流。如果网络环境无法显示视频,则只接收音频流。
  2. 加入房间后,如果弱网环境下触发了音视频流回退,用户接收到的流从媒体流切换到音频流,或从音频流切换到媒体流时,SDK 会触发 onRemoteSubscribeFallbackToAudioOnly 回调,报告当前接收流的回退状态。

示例代码

// 开启视频双流模式。
[NERTCEngine shared].rtcEngine->enableDualStreamMode(true);
// 发送端指定弱网环境下本地发布的媒体流自动回退为音频流。
[NERTCEngine shared].rtcEngine->setLocalPublishFallbackOption(kNERtcStreamFallbackAudioOnly);
// 接收端指定弱网环境下先尝试接收小流;若当前网络环境无法显示视频,则只接收音频流。
[NERTCEngine shared].rtcEngine->setRemoteSubscribeFallbackOption(kNERtcStreamFallbackAudioOnly);
此文档是否对你有帮助?
有帮助
去反馈
  • 注意事项
  • 实现方法
  • 发流端
  • 接收端
  • 示例代码