myVideoStream.getTracks().forEach(function(track) {
track.stop();
}
关闭所有轨道后如何重新启动流轨道。 或在视频流应用程序中打开和关闭摄像头的任何替代方法(例如在 google meet 中打开关闭视频按钮)
MDN 的文档介绍了以下有关停止轨道的信息。
调用 stop() 告诉用户代理 MediaStreamTrack 不再需要轨道的源(无论该源是什么,包括文件、网络流或本地摄像头或麦克风)。由于多个轨道可能使用相同的源(例如,如果两个选项卡正在使用设备的麦克风),因此源本身不一定会立即停止。相反,它与轨道解除关联并且轨道对象停止。一旦没有媒体轨道正在使用该源,该源实际上可能会完全停止。
这意味着您必须通过创建一个新流来重新启动流,因为媒体已完全停止运行。
我也遇到了同样的问题,我通过使用
track.enable = false
静音,然后使用track.enable = true
重新激活来解决它,只需在静音之前将原始轨道保存在独立变量中,并使用该变量独立的轨道重新激活,记住重新激活时需要使用 track.enable = true
。
希望这有帮助。
你也可以尝试这个:
track.enabled = false;// to mute
console.log(track);
track.enabled = true;//to unmute