You need to enable JavaScript to run this app.
实时音视频

实时音视频

复制全文
使用 Simulcast 功能
推送多分辨率视频流【V3.58 及此前版本】
复制全文
推送多分辨率视频流【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
这个页面对您有帮助吗?
有用
有用
无用
无用