You need to enable JavaScript to run this app.
导航

音视频流回退

最近更新时间2023.12.13 16:13:02

首次发布时间2021.07.18 15:06:37

RTC支持在网络不佳或设备性能不足时,开启流回退功能以保证用户的音视频体验。

功能变更日志
  1. 自客户端 SDK 3.36 起,支持更多档位的视频流回退。
功能简述

你可能在以下情况下,需要降低发送/接收的视频编码规格(流回退):

  • 网络环境发生变化,网络连接较差,高清视频流卡顿较高;

  • 设备性能不足,编码/解码高清视频流卡顿较高;

  • 订阅端渲染远端视频流的窗口大小发生变化,需要根据窗口大小选择接收的视频流的规格。比如,全屏观看来自远端的音视频互动时,接收高清视频流;以小窗口形式观看同一个音视频互动时,仅需要接收标清视频流。

此时,发布端/订阅端可以设置流回退。设置完成后,可以实现:

  • 发布端:大流开始按照分辨率等级中的各档位进行降级。

  • 订阅端:接收的流从当前分辨率值开始依次按发布端视频分辨率等级中的档位进行降级,或者回退为音频流。

说明:目前Web SDK仅支持订阅端在弱网情况下设置自动流回退,不支持订阅端在解码性能不足时,进行自动流回退。

关于分辨率等级划分参看推送多路流

前提条件

当设置视频流自动降级时,你必须已经在发布端设置了推送多路流。具体步骤,参看推送多路流

功能实现

使用客户端 API

视频发送回退策略和视频接收回退策略互不影响,你应在发布端和订阅端分别设置。

设置发布端自动流回退

发布端开启了推送多路流功能,并设置了期望参数值后,SDK 会自动为设置的值划分等级,你须开启发布端音视频流回退功能,在上行网络不佳或设备性能不足时,对视频流进行降级处理。具体而言,发送的流将从设置的大流开始逐一档位进行降级,当大流分辨率将至接近中流时,则取消大流,依次类推;在网络和设备性能正常时,将恢复发送多路流。
例:当发布端多路流的等级划分如下时:

视频流等级长度(px)宽度(px)帧率(fps)最大码率(kbps)
大流19201080303000
1280720301200
1120630301000
96054030900
中流80045030800
64036030600
48027015400
小流32018015300
25614415200
弱流1609015100

此时,发布端的大流开始从 1080——720——630——540 逐一档位进行降级,若此时网络环境依旧不满足发送 540p 的流,则大流取消,中流开始降级,依次类推,最终降至只发送一条 90p 的视频流。

API 参考

功能简述AndroidiOSWindowsmacOS
设置发布的音视频流的回退选项setPublishFallbackOptionsetPublishFallbackOption:setPublishFallbackOption/

设置订阅端自动流回退

在下行网络不佳或设备性能不足时,你可以开启订阅的音视频流自动回退策略。SDK 支持两种策略:

  • 接收的流会从当前分辨率值开始按档位依次降级,在网络和设备性能正常时则恢复到回退前的设定值。一般,在发布端发布多路流时,使用此策略。这种策略在发布端没有发布多路流时,不生效。

  • 接收的流回退为音频流,在网络和设备性能正常时恢复为视频流。一般,在发布端没有发布多路流时,使用此策略。

API 参考

功能简述AndroidiOSWindowsmacOSWeb
设置订阅的音视频流的回退选项setSubscribeFallbackOptionsetSubscribeFallbackOption:setSubscribeFallbackOption/setSubscribeFallbackOption

使用服务端下发配置

你也可以联系技术支持同学,帮助你在 RTC 服务端进行发布端/订阅端流回退配置。当使用服务端下发配置实现时,下发配置优先级高于在客户端使用 API 设定的配置。