常见问题

产品 / 插件
平台 / 框架

如何切换屏幕共享流和摄像头视频流?

产品 / 插件:实时音视频 / 低延迟直播

平台 / 框架:Web

更新时间:2021-09-09 19:57


在使用 ZEGO Express Web SDK 实现屏幕共享的场景中,开发者可参考本文,在推送的屏幕共享流和摄像头采集的视频流之间进行切换。

ZEGO 推荐以下三个方法,皆以从屏幕共享流切换到摄像头视频流为例。

  1. 创建两路流
  2. 销毁当前流再创建流推送
  3. 替换当前视频轨道

屏幕共享流和摄像头采集的视频流互相切换的方法是一样的。

1 创建两路流

如果开发者的实际应用场景允许同时创建两路流并推送两路流,ZEGO 推荐使用此方法:

  1. 推流端创建两个 MediaStream 对象,对应两路流———屏幕共享流和摄像头视频流。创建流的具体实现方法请参考 createStream 接口。

  2. 需要从屏幕共享流切换到摄像头视频流时,根据摄像头视频流的流 ID,拉流端选择拉摄像头视频流即可成功切换。

2 销毁当前流再创建流推送

  1. 调用 stopPubliushStream 取消推流,再调用 destroyStream 接口销毁当前屏幕共享流。
  2. 调用 createStream 创建摄像头视频流。
  3. 调用 startPublishingStream 接口推送摄像头视频流。

此方法的兼容性和稳定性较好,但是无法动态切换,并且切换时间较长(一到两秒左右)。

3 替换当前视频轨道

调用 replaceTrack 接口将音视频流中的视频轨道替换为摄像头视频流。

如果是从摄像头视频流切换成屏幕共享流,替换为屏幕共享流后,编码帧率会下降为 5 fps。

此方法可以实现动态切换,并且切换速度快,但是 replaceTrack 接口限制较多:

  • 仅支持 Chrome 65+,Safari 以及最新版 Firefox 浏览器。
  • 部分移动设备上可能不生效。
  • 使用前需先通过 createStream 创建屏幕共享流和摄像头视频流。

相关参考

本篇目录
下载 PDF