如何从MediaStream中删除曲目并“停止”网络摄像头?

时间:2013-08-11 16:35:35

标签: javascript webrtc getusermedia

我正在尝试从MediaStream中删除曲目。 MediaStream.removeTrack()从流中删除了曲目,但相机指示灯保持亮起,表示相机仍处于活动状态。

https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack?redirectlocale=en-US&redirectslug=DOM%2FMediaStreamTrack

这引用了一个stop()方法,我想这会完全停止相机,但是我会得到"Object MediaStreamTrack has no method 'stop'"

有没有办法解决这个问题,还是我必须停止整个流,然后用我不想要的曲目重新创建它?举个例子,我想在录音带还在的时候删除视频轨道。

4 个答案:

答案 0 :(得分:9)

MediaStreamTrack.stop()现在是added Chrome。

Chrome浏览器中

MediaStream.stop()deprecated

您应该使用MediaStream.getVideoTracks()获取视频曲目并使用MediaStreamTrack.stop()

停止曲目

答案 1 :(得分:2)

您需要在MediaStream上调用stop(),而不是MediaStreamTrack。

看看simpl.info/gum。在控制台中,拨打stream.stop():录制停止,摄像机灯熄灭。

答案 2 :(得分:0)

看起来处理此问题的正确方法是停止MediaStream,重新创建(并重新附加)它作为仅音频版本,然后重新协商PeerConnection会话。不幸的是,Firefox目前正在doesn't support重新谈判。

因此,唯一可行的黑客也可以按照建议的here使用新的PeerConnection重新创建MediaStream(请参阅“在视频中添加视频”)。

答案 3 :(得分:0)

为了停止特定的媒体流,也许这有帮助:(Link)

function stopStreamedVideo(videoElem) {
  const stream = videoElem.srcObject;
  const tracks = stream.getTracks();

  tracks.forEach(function(track) {
    track.stop();
  });

  videoElem.srcObject = null;
}