You need to enable JavaScript to run this app.
导航
推送多分辨流视频流和自动回退【V3.60 及之后版本】
最近更新时间:2024.11.05 11:56:09首次发布时间:2024.10.30 10:30:02

对于同一路视频流,发布端可以向房间内的其他用户,同时编码并推送多路内容相同、规格不同的视频流。以满足自动回退或订阅端的需求。
其中,分辨率最高的一路流为大流,其他几路分辨率较小的流统称为 Simulcast 流。

  • 在 Native SDK,最多可设置中、小、弱共 3 路 Simulcast 流。
  • 在 Web SDK,最多可设置中、小共 2 路 Simulcast 流。

适用场景

以下场景适合开启 Simulcast 功能。

  • 发布端或订阅端网络环境发生变化,网络连接较差,高清视频流卡顿较高时,希望切换到规格较低的视频流。
  • 发布端或订阅端设备性能不足,解码高清视频流卡顿较高。
  • 订阅端渲染远端视频流的窗口大小发生变化,需要根据窗口大小选择接收的视频流的规格。比如,全屏观看来自远端的音视频互动时,接收高清视频流;以小窗口形式观看同一个音视频互动时,仅需要接收标清视频流。

前提条件

  • 你已经集成 Native SDK V3.60.2 或 Web SDK V4.63.0 及更高版本的 RTC SDK,实现了基本的音视频通话。

微信小程序端 SDK 不支持本功能。

  • Simulcast 功能只适用于视频流主流,不适用于屏幕流。

发布 Simulcast 流

只有在发布端开启 Simulcast 功能后,才能实现媒体流在发布端和订阅端自动回退功能,订阅端才能自主选择 Simulcast 流。

  1. 通过 setVideoEncoderConfig 设置大流的视频编码参数。
  2. 进房前调用 setLocalSimulcastMode 开启 Simulcast 功能。同时选择 Simulcast 功能的模式,发送全部流或按订阅发送。
  3. 【可选】通过 setLocalSimulcastMode,设置每路 Simulcast 流的编码参数,按照分辨率从小到大进行设置。Native SDK,最多设置 3 路 Simulcast 流。Web SDK 最多设置 2 路 Simulcast 流。
  4. 【可选】你可以在进房后再次调用 setLocalSimulcastMode 更新 Simulcast 流的编码参数。但无法切换 Simulcast 功能模式,也无法更改 Simulcast 流路数。

媒体流自动回退

发布端或订阅端设备性能不足或网络环境劣化时,高清视频流可能发生卡顿,你可以通过开启自动回退功能,切换到规格较低的视频流,优先保障流畅的观看体验。
在网络和设备性能正常时自动恢复到回退前的设定值。

发布端自动回退

  1. 发布端开启 Simulcast 功能。参见 发布 Simulcast 流
  2. 开启发布端的自动回退功能。
    • Native 端 SDK 调用 setPublishFallbackOption 开启。
    • Web SDK 自动开启,无需手动调用接口。

功能开启后,如果发布端的网络条件或者设备性能不佳时,SDK 将按照通过 setLocalSimulcastMode 设置的 Simulcast 流编码参数,逐级回退,直到回退到最小分辨率的流。

订阅端自动回退

通过 setSubscribeFallbackOption 开启订阅端的自动回退功能,通过枚举值传入回退策略:

  • 回退到 Simulcast 流:在满足降级条件时,接收流会按照 Simulcast 流规格由高到低顺序,依次降级。在网络和设备性能正常时则恢复到回退前的设定值。一般,在发布端发布多路流时,使用此策略。这种策略在发布端没有发布 Simulcast 流时,不生效。
  • 回退到音频流:在满足降级条件时,接收的流回退为音频流。在网络和设备性能正常时恢复为视频流。一般,在发布端没有发布多路流时,使用此策略。

主动订阅 Simulcast 流

当订阅端渲染远端视频流的窗口大小发生变化,如果发布端已发布 Simulcast 流,你可以根据窗口大小选择接收的视频流的规格。

  1. 发布端开启 Simulcast 功能,通过 stream_config[] 数组设置 Simulcast 流的规格。参见 发布 Simulcast 流

  2. 接收端通过 setRemoteSimulcastStreamType 设置 Simulcast 流订阅偏好。你可以通过传入枚举值指定订阅偏好。
    当发布端发布了 3 路 Simulcast 流时,发布端的 Simulcast 流和订阅偏好枚举值的对应关系如下:

    发布端设置的 Simulcast 流订阅端的 Simulcast 流订阅偏好
    stream_config[0]弱流:kSimulcastStreamTypeWeak = 0
    stream_config[1]小流:kSimulcastStreamTypeLow
    stream_config[2]中流:kSimulcastStreamTypeMid
    • 指定的 Simulcast 流未发布时:
      • 发布端只发布大流和一路 Simulcast 流 stream_config[0] 时,如果订阅端偏好为中流或小流,实际订阅到的都是stream_config[0]
      • 发布端只发布了大流和两路 Simulcast 流,stream_config[0]stream_config[1] 时,如果订阅端偏好为中流,实际订阅到的是 stream_config[1]
    • Web SDK 和 Native SDK 互通时:
      • 发布端使用 Native SDK 发布了大流和三路 Simulcast 流,使用 Web SDK 的订阅端,将无法订阅到 stream_config[0],即规格最低的视频流。
      • 发布端使用 Web SDK,发布了大流和两路 Simulcast 流,使用 Native SDK 的订阅端,如果订阅端偏好为弱流,实际订阅到的也是 stream_config[0],即规格最低的视频流。

API 参考

功能/平台AndroidiOSmacOSWindowsLinuxWeb
订阅端开启和设置 Simulcast 功能setLocalSimulcastMode(VideoSimulcastMode mode)setLocalSimulcastMode:setLocalSimulcastMode:setLocalSimulcastMode(VideoSimulcastMode mode)setLocalSimulcastMode(VideoSimulcastMode mode)setLocalSimulcastMode
设置大流的编码参数setVideoEncoderConfigsetVideoEncoderConfig:setVideoEncoderConfig:setVideoEncoderConfigsetVideoEncoderConfigsetVideoEncoderConfig
设置 Simulcast 流的编码参数setLocalSimulcastMode(VideoSimulcastMode mode, VideoEncoderConfig[] streamConfig)setLocalSimulcastMode:config:setLocalSimulcastMode:config:setLocalSimulcastMode(VideoSimulcastMode mode, VideoEncoderConfig[] streamConfig)setLocalSimulcastMode(VideoSimulcastMode mode, VideoEncoderConfig[] streamConfig)setLocalSimulcastMode
设置期望订阅的远端视频流的参数setRemoteSimulcastStreamTypesetRemoteSimulcastStreamType:streamType:setRemoteSimulcastStreamType:streamType:setRemoteSimulcastStreamTypesetRemoteSimulcastStreamTypesetRemoteSimulcastStreamType
设置发布的音视频流的回退选项setPublishFallbackOptionsetPublishFallbackOption:setPublishFallbackOption:setPublishFallbackOptionsetPublishFallbackOption
设置订阅的音视频流的回退选项setSubscribeFallbackOptionsetSubscribeFallbackOption:setSubscribeFallbackOption:setSubscribeFallbackOptionsetSubscribeFallbackOptionsetSubscribeFallbackOption

功能变更日志

在 Native SDK V3.60.2 和 Web SDK V4.63.0 中,我们升级了 Simulcast 功能的使用方式。本功能在历史版本中的使用说明参见 推送多分辨率视频流音视频流回退

  • 发布端和订阅端端接口变更,详见各端 升级指南
  • 发布端的回退规则变更。以发送端设置了 1080P(大)、360P(中)、180P(小)、90P(弱)为例。
    • 在 Native SDK V3.60.2 和 Web SDK V4.63.0 之前的版本中,回退路径是 1080P(大) -> 720P(大) -> 630P(大) -> 540P(大) -> 450P(大) -> 360P(中) -> 270P(中) -> 180P(小) -> 144P(小) -> 90P(弱)。
    • 在 Native SDK V3.60.2 和 Web SDK V4.63.0 及之后的版本中,回退路径是 1080P(大) -> 360P(中) -> 180P(小) -> 90P(弱)。