getUserMedia(constrains).then(stream => {
var recorder = new MediaRecorder(stream)
})
recorder.start()
recorder.pause()
// get new stream getUserMedia(constrains_new)
// how to update recorder stream here?
recorder.resume()
是否可以?我尝试创建 MediaStream 并使用addTrack and 删除曲目更改流轨道的方法但没有成功(当我尝试使用更新的流恢复记录器时,记录器停止)
有任何想法吗?
简短的回答是否定的,这是不可能的。这MediaStream 录制规范 https://w3c.github.io/mediacapture-record/明确描述了这种行为:https://w3c.github.io/mediacapture-record/#dom-mediarecorder-start https://w3c.github.io/mediacapture-record/#dom-mediarecorder-start。该算法的要点 15.3 表示“如果在任何时候,将轨道添加到流的轨道集中或从流的轨道集中删除,则 UA 必须立即停止收集数据......”。
但如果您只想录制音频,您可以使用 AudioContext 来代理您的流。创建 MediaStreamAudioDestinationNode 并使用它提供的流进行录制。然后,您可以将 MediaStreamAudioSourceNodes 和/或 MediaStreamTrackAudioSourceNodes 馈送到音频图中,并以您想要的任何方式混合它们。
最后但并非最不重要的一点是,当前计划将您正在寻找的功能添加到规范中。也许你只需要稍等一下。或者可能更长一点,具体取决于您使用的浏览器。 :-)
https://github.com/w3c/mediacapture-record/issues/167 https://github.com/w3c/mediacapture-record/issues/167
https://github.com/w3c/mediacapture-record/pull/186 https://github.com/w3c/mediacapture-record/pull/186
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)