本文介绍如何订阅小流以提升用户体验。
什么是大小流
大小流指的是同时推送两路相机流,除了默认的相机流外,还会推流一路低分辨率的相机流,订阅端可以根据实际情况订阅小流,从而降低带宽和性能压力,提升用户体验。
发布小流
检测环境
检测当前环境是否支持开启大小流,不支持时请勿开启。
// 静态方法
const result = AliRtcEngine.isDualVideoStreamSupported();
if (!result) {
console.log('Your browser does not support opening dual video stream.');
}
开启大小流
调用setEnableDualVideoStream接口开启小流并设置小流参数,该接口在发布前后均可调用。
// 前提:需要先创建引擎实例
// 开启小流,并设置所需的分辨率、帧率
// 分辨率宽高比最好和大流的保持一致,否则将会对画面进行裁切
aliRtcEngine.setEnableDualVideoStream(true, {
width: 320,
height: 180,
frameRate: 200,
});
// 若需要调整小流分辨率,重新调用即可
aliRtcEngine.setEnableDualVideoStream(true, {
width: 240,
height: 180,
frameRate: 200,
});
监听小流状态变化
如果您需要处理小流状态变化,可以监听dualStreamPublishStateChanged事件。
aliRtcEngine.on('dualStreamPublishStateChanged', (oldState, newState, interval, channelId) => {
// oldState、newState 类型均为AliRtcSubscribeState,值包含 0(初始化)、1(未发布)、2(发布中)、3(已发布)
// interval 为两个状态之间的变化时间间隔,单位毫秒
console.log(`频道 ${channelId} 小流发布状态由 ${oldState} 变为 ${newState}`);
});
订阅小流
aliyun-rtc-sdk默认拉取的是大流,若需要拉取小流,调用setRemoteDefaultVideoStreamType接口设置为小流即可。
// 支持传入 1 (大流)、2(小流)
aliRtcEngine.setRemoteDefaultVideoStreamType(2);
若远端用户未发布小流,则自动拉取大流,实例过程中订阅的流类型请参考下方表格:
设置的默认流类型 | 远端用户是否发布了小流 | 实例订阅的流类型 |
大流 | 否 | 大流 |
大流 | 是 | 大流 |
小流 | 否 | 大流 |
小流 | 是 | 小流 |
文档内容是否对您有帮助?