因此,我正在使用 webRTC 创建本地流(视频和音频),并希望能够停止和重新启动该流的视频。
在我想要停止流的地方,我正在获取本地视频轨道:
var vidTrack = this.videoEl.srcObject.getTracks().find(track => track.kind == 'video')
然后我在轨道上调用 stop() ,它起作用了,并关闭了我设备上的摄像头指示灯(这就是我想要的)。问题是这似乎是一种单向方法,一旦我调用 stop() 就无法重新启动流。
我已经玩过了,只需切换轨道对象上的 enabled
bool 值,这会禁用轨道通过,但不会停止在我的设备上显示相机灯指示器(我需要,而 stop() 则执行)。
只是想知道是否有人遇到过这个问题/有想法或解决方案来获得我需要的东西。
最佳答案
根据 Dirk V 的回复,我最终为将来可能会看到此问题的人提供了解决方案:
if (vidTrack && toggle && vidTrack.readyState && vidTrack.readyState == "ended") {
let newVideoStreamGrab = await navigator.mediaDevices.getUserMedia({
video: true
})
this.stream.removeTrack(this.stream.getVideoTracks()[0])
this.stream.addTrack(newVideoStreamGrab.getVideoTracks()[0])
} else {
vidTrack.stop()
}
关于javascript - WebRTC - 调用 stop() 后重新启动视频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64030460/