开启大小流

本文介绍如何订阅小流以提升用户体验。

什么是大小流

大小流指的是同时推送两路相机流,除了默认的相机流外,还会推流一路低分辨率的相机流,订阅端可以根据实际情况订阅小流,从而降低带宽和性能压力,提升用户体验。

发布小流

检测环境

检测当前环境是否支持开启大小流,不支持时请勿开启。

// 静态方法
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);

若远端用户未发布小流,则自动拉取大流,实例过程中订阅的流类型请参考下方表格:

设置的默认流类型

远端用户是否发布了小流

实例订阅的流类型

大流

大流

大流

大流

小流

大流

小流

小流