web-audio-api - 是否可以更改 MediaRecorder 的流?

标签 web-audio-api mediarecorder

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 并使用 添加跟踪 移除跟踪 更改流轨道但没有成功的方法(当我尝试使用更新的流恢复记录器时,记录器停止)

有任何想法吗?

最佳答案

简短的回答是否定的,这是不可能的。 MediaStream recording spec明确描述此行为: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/pull/186

关于web-audio-api - 是否可以更改 MediaRecorder 的流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838283/

相关文章:

javascript - HTML5移动版:仅播放iOS上视频流中音频的一侧

html - 在 nodejs 服务器上保存 wav

javascript - 更好的 JavaScript 性能

javascript - 错误 : Unable to decode audio data when playing sound onclick within A-frame Environment

android mediarecorder 错误(MediaRecorder 启动失败 : -19)

android - 安卓如何通过音频流录制麦克风?

java.lang.IllegalStateException 在 android.media.MediaRecorder

javascript - 网络音频 API - USB 集线器

android - MediaRecorder.stop() 卡在 Android 4.0 (ICS)

android - 使用 MediaRecorder 在 android 中录制语音通话