javascript - 通过 forEach(function(track) {track.stop();} 关闭流后重新启动流
问题描述
myVideoStream.getTracks().forEach(function(track) {
track.stop();
}
关闭所有轨道后如何重新启动流轨道。或在视频流应用程序中打开和关闭相机的任何替代方法(如在 google meet 中打开关闭视频按钮)
解决方案
MDN上的文档说明了以下关于停止轨道的内容。
调用 stop() 会告诉用户代理 MediaStreamTrack 不再需要轨道的源(无论该源是什么,包括文件、网络流或本地摄像头或麦克风)。由于多个轨道可能使用相同的源(例如,如果两个选项卡正在使用设备的麦克风),源本身不一定会立即停止。相反,它与轨道解除关联,并且轨道对象停止。一旦没有媒体轨道正在使用源,源实际上可能完全停止。
这意味着您必须通过创建一个新流来重新启动流,因为媒体已完全停止运行。
推荐阅读
- python - 如何获得一维数组和二维数组的平均值?
- c++ - 运行时错误:将非零偏移量 18446744073709551615 应用于空指针 (basic_string.h)
- c - c 中的已退出分段错误(后缀的中缀)
- json - Gatling 转换 Json 响应
- regex - 正则表达式使用 xslt 匹配某些元素文本
- vb.net - 当使用 Rest Api 从 Docusing 生成访问令牌时会出错
- php - 如何动态更新 div 颜色每次 php 函数在 html 页面中重新运行
- python - astropy QTable 中的不确定性
- c - 如何仅打印递归函数中找到的文件的文件树?
- node.js - 为什么来自 Firebase Cloud Messaging 的消息 ID 为空