如何从MediaStream中删除音轨;停止“;网络摄像头

How to remove track from MediaStream and "stop" webcam?

本文关键字:停止 网络 摄像头 音轨 删除 MediaStream      更新时间:2023-09-26

我正试图从MediaStream中删除一个音轨。MediaStream.removeTrack()从流中删除轨迹,但摄影机指示灯保持亮起,表示摄影机仍处于活动状态。

https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack?redirectlocale=en-美国&重定向段塞=DOM%2MediaStreamTrack

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

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

MediaStreamTrack.stop()现已添加到Chrome中。

MediaStream.stop()在Chrome 45中已弃用。

您应该使用MediaStream.getVideoTracks()获取视频音轨,并使用MediaStreamTrack.stop() 停止音轨

用于停止特定媒体流,也许这有助于:(链接)

function stopStreamedVideo(videoElem) {
  const stream = videoElem.srcObject;
  const tracks = stream.getTracks();
  tracks.forEach(function(track) {
    track.stop();
  });
  videoElem.srcObject = null;
}

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

查看simpl.info/gum。从控制台调用stream.stop():录制停止,摄像机指示灯熄灭。

处理此问题的正确方法似乎是停止MediaStream,将其重新创建(并重新附加)为仅音频会话,然后重新协商PeerConnection会话。不幸的是,Firefox目前不支持在会话中期重新协商。

因此,唯一可行的破解方法是使用此处建议的新MediaStream重新创建PeerConnection(请参阅"添加视频通话中")。