10

我正在尝试从 MediaStream 中删除曲目。MediaStream.removeTrack()从流中删除轨道,但相机灯仍然亮着,表示相机仍然处于活动状态。

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

这引用了stop()一种我认为可以完全停止相机的方法,但是在 chrome 中我得到了"Object MediaStreamTrack has no method 'stop'"

有没有办法解决这个问题,还是我必须停止整个流,然后用我不想消失的轨道重新创建它?例如,我想在音轨仍然存在时删除视频轨道。

4

4 回答 4

12

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

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

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

于 2015-12-17T10:30:38.103 回答
1

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

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

于 2013-08-12T10:02:36.523 回答
1

停止特定的媒体流,也许这有帮助:(链接

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

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

  videoElem.srcObject = null;
}
于 2021-04-13T14:25:18.377 回答
0

看起来处理这个问题的正确方法是停止你的MediaStream,重新创建(并重新附加)它作为纯音频,然后重新协商PeerConnection会话。不幸的是,Firefox 目前不支持会话中的重新协商。

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

于 2013-12-28T13:34:22.633 回答