javascript - WebRTC - 调用 stop() 后重新启动视频流

标签 javascript webrtc

因此,我正在使用 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/

相关文章:

javascript - 在javascript中通过麦克风发送声音

webrtc - 如何在 webrtc 中获取远程视频宽度和高度

javascript - 如何使用 HTML5 WebRTC 录制和保存视频

javascript - webview 不显示 javascript windows.open()

javascript - AngularJS使用过滤器根据属性值查找特定项目

javascript - 动态调用静态方法

javascript - WebRTC - DataChannel - 适用于移动互联网?

javascript - 用于构建 AngularJS 应用程序的正确 API 架构

javascript - 如何从 json 输出中检索数据

android - 使用 c++static 的 NDK 编译错误