首页 > 解决方案 > 通过 forEach(function(track) {track.stop();} 关闭流后重新启动流

问题描述

myVideoStream.getTracks().forEach(function(track) {
  track.stop();
}

关闭所有轨道后如何重新启动流轨道。或在视频流应用程序中打开和关闭相机的任何替代方法(如在 google meet 中打开关闭视频按钮)

标签: javascripthtmlvideo-streaming

解决方案


MDN上的文档说明了以下关于停止轨道的内容。

调用 stop() 会告诉用户代理 MediaStreamTrack 不再需要轨道的源(无论该源是什么,包括文件、网络流或本地摄像头或麦克风)。由于多个轨道可能使用相同的源(例如,如果两个选项卡正在使用设备的麦克风),源本身不一定会立即停止。相反,它与轨道解除关联,并且轨道对象停止。一旦没有媒体轨道正在使用源,源实际上可能完全停止。

这意味着您必须通过创建一个新流来重新启动流,因为媒体已完全停止运行。


推荐阅读