我正在尝试从MediaStream中删除曲目。 MediaStream.removeTrack()
从流中删除了曲目,但相机指示灯保持亮起,表示相机仍处于活动状态。
这引用了一个stop()
方法,我想这会完全停止相机,但是我会得到"Object MediaStreamTrack has no method 'stop'"
有没有办法解决这个问题,还是我必须停止整个流,然后用我不想要的曲目重新创建它?举个例子,我想在录音带还在的时候删除视频轨道。
答案 0 :(得分:9)
MediaStreamTrack.stop()
现在是added 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;
}