大小流
大小流模式是指在发布资源时上传一大一小两道视频流。
SDK 默认打开发布大小流功能,即每个用户在发布视频资源时自动发布大小两个视频流。小流的分辨率默认跟随大流。
提示
在多人音视频通话过程中,大小流模式可有效减少下行带宽占用。订阅方可按需订阅小流。
小视频流与大视频流的分辨率对应关系如下:
大流分辨率 | 小流分辨率 | 比例 |
---|---|---|
176X144 | 176X144 | 11:9 |
180X180 | 180X180 | 1:1 |
256X144 | 256X144 | 16:9 |
240X180 | 240X180 | 4:3 |
320X180 | 256X144 | 16:9 |
240X240 | 180X180 | 1:1 |
320X240 | 240X180 | 4:3 |
360X360 | 180X180 | 1:1 |
480X360 | 240X180 | 4:3 |
640X360 | 256X144 | 16:9 |
480X480 | 180X180 | 1:1 |
640X480 | 240X180 | 4:3 |
720X480 | 240X180 | 3:2 |
848X480 | 256X144 | 9:5 |
960X720 | 240X180 | 4:3 |
1280X720 | 256X144 | 16:9 |
1920X1080 | 256X144 | 16:9 |
提示
音频资源不存在大小流概念,因此以下接口对于音频资源没有任何效果。以下示例代码中的 room
指加入房间成功后获取到的实例。
发布方开关大小流
开启功能后,发布资源时会发布大小两道流。
API 参考:publish
const { code } = await room.publish([
{
track: videoTrack,
pubTiny: true // 指定同时发布小流资源
}
])
设置小流属性
开启了大小流功能后,小流会自动使用默认属性。您也可以通过 pubTiny
为小流视频设置指定的分辨率和码率,示例如下:
API 参考:publish
// 通过 import { RCResolution, RCFrameRate } from '@rongcloud/plugin-rtc' 获取相关枚举值
const { code } = await room.publish([
{
track: videoTrack,
// 通过 pubTiny 指定小流分辨率与帧率
pubTiny: { frameRate: RCFrameRate.FPS_15, resolution: RCResolution.W176_H144 }
}
])
订阅方切换大小流流
API 参考:subscribe
// 该接口支持同时订阅多道资源,且支持订阅指定视频资源的大流或小流,默认订阅大流
const { code } = await room.subscribe([
// 订阅 videoTrack_1 的大流
videoTrack_1,
// 订阅 videoTrack_2 的小流
{ track: videoTrack_2, subTiny: true }
])
对于已经订阅的资源,重新通过 room.subscribe()
指定订阅目标资源的小流或大流即可。