You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
使用 Simulcast 功能
推送多分辨率视频流【V3.58 及此前版本】
复制全文
下载 pdf
推送多分辨率视频流【V3.58 及此前版本】

对于同一路视频流,发布端可以通过 Simulcast 功能,向房间内的其他用户,同时编码并推送多路内容相同、规格不同的视频流。以满足订阅端不同的订阅需求。

适用场景

以下场景适合使用 SImulcast 功能:

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

前提条件

  • 已联系技术支持开通白名单。
  • 你已经集成 RTC SDK,实现了基本的音视频通话。
    • Native SDK V3.36 至 V3.58
    • Web SDK V4.42 至 V4.62
    • 微信小程序端 SDK 不支持本功能。

发布多分辨率视频流

RTC SDK 支持同一用户发布至多 4 路编码规格不同的摄像头采集视频流,以满足订阅端不同的视频质量需求,你可以:

Web SDK 支持发布最多 3 路不同规格的视频流。

  • 调用 setVideoEncoderConfig 设置 1 路期望发布的最大分辨率的视频流(大流)。默认视频流的参数为:

    • 分辨率:640px × 360px
    • 帧率: 15fps
    • 码率:600kbps
  • 进房前调用 setLocalSimulcastMode(mode) 开启 Simulcast 功能。默认设置一路小流,参数为:

    • 分辨率 160px × 90px
    • 帧率 15fps
  • 如果你需要指定这些视频流的编码参数,进房前调用 setLocalSimulcastMode(mode, streamConfig) 开启并至多设置 3 条视频流的参数,包含分辨率上限等。依次设置弱、小、中流视频参数。
    你需要确保视频流的视频宽、高、码率均低于上一等级。
    你可以参考下表分别设置大、中、小、弱流的视频流编码参数。

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

在允许性能回退的场景下,发布的视频流会根据网络环境,按照大、中、小、弱流的排序进行自动降级,具体参看音视频流回退,否则 SDK 将仅发送设置的分辨率值的流。

订阅多分辨率视频流

发布端开启发送多分辨率视频流的情况下,订阅端可以调用 setRemoteVideoConfig 设置期望订阅偏好,选择订阅大、中、小、弱流对应的视频流。实际订阅到的视频流参数由发布端的实际发送参数决定。

使用服务端下发配置

你也可以联系技术支持,帮助你在 RTC 服务端进行推送多分辨率视频流的相关配置。当使用服务端下发配置实现时,下发配置优先级高于在客户端使用 API 设定的配置。

视频流等级划分示例

发布端

  • 例 1:发布端设置的 3 个分辨率上限分别为 720p、360p、144p,则等级划分会自动调整为下表所示:
视频流等级长度(px)宽度(px)帧率(fps)最大码率(kbps)
大流1280720301200
1120630301000
96054030900
80045030800
中流64036030600
48027015400
32018015300
小流25614415200
弱流1609015100
  • 例 2:发布端设置的 3 个分辨率上限分别为 720p、630p、540p,则等级划分会自动调整为下表所示:
视频流等级长度(px)宽度(px)帧率(fps)最大码率(kbps)
大流1280720301200
中流1120630301000
小流96054030900
80045030800
64036030600
48027015400
32018015300
25614415200
弱流1609015100
  • 例 3:若发布端设置了小于等于 3 条包含 90p 的流,当相邻两个分辨率呈大于等于 2 倍的关系时,则会在这两个分辨率之间额外插入 1 个等级;若 3 个值中相邻的分辨率两两均呈大于等于 2 倍的关系,则优先满足分辨率小的场景。如发布端设置的 3 个分辨率上限分别为 1080p、360p、90p,则优先在 360p 和 90p 之间插入一个等级,等级划分会自动调整为下表所示:
视频流等级长度(px)宽度(px)帧率(fps)最大码率(kbps)
大流19201080303000
1280720301200
1120630301000
96054030900
80045030800
中流64036030600
48027015400
小流32018015300
25614415200
弱流1609015100
  • 例 4:若发布端设置了小于 3 个分辨率上限值,则 SDK 自动补齐额外的等级。如当用户将分辨率上限值设为 360p,则等级划分会自动调整为下表所示:
视频流等级长度(px)宽度(px)帧率(fps)最大码率(kbps)
大流64036030600
中流48027015400
小流32018015300
25614415200
弱流1609015100

订阅端

当发布端的设置为例 1 所示时

  • 例 5:若订阅端设置了一个 639px × 363px 的不标准分辨率,则订阅端最终收到的流分辨率为 640px × 360px
  • 例 6:若订阅端共有 1080p、720p、630p 三种设置,则所有订阅端最终都会收到分辨率为 1120px × 630px 的一路流。

API 参考

请参见历史版本文档

最近更新时间:2025.10.20 14:23:29
这个页面对您有帮助吗?
有用
有用
无用
无用