我正试图从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
(请参阅"添加视频通话中")。