【发布时间】:2021-08-02 11:24:40
【问题描述】:
我正在使用MediaRecorder JS 类将动画画布 (WebGL) 和 Web 音频 API 输出一起录制为视频。如果某些音频正在播放,一切都会按预期工作,但如果没有,那么在停止 MediaRecorder 实例时我会得到空 blob。
以下是我的部分代码:
const chunks = [];
var recorder = null, captureStream = null;
function dataAvailable(event) {
chunks.push(event.data);
}
function startCapture() {
const streamDestination = audio.context.createMediaStreamDestination();
masterGain.connect(streamDestination);
captureStream = canvas.captureStream();
// This line adds audio to the recording if audio is playing
// but if audio isn't playing at the moment, I get empty chunks
// at the end of recording
captureStream.addTrack(streamDestination.stream.getAudioTracks()[0]);
recorder = new MediaRecorder(captureStream);
recorder.ondataavailable = dataAvailable;
recorder.onstop = exportVideo;
recorder.start();
}
function exportVideo() {
// Here chunks will be empty if Web Audio API
// didn't played anything during recording
new Blob(chunks, {'type': 'video/webm'});
...
}
如何在 Web Audio 静音时获得正确的录音?
在 Windows 10 上使用 Chrome v92。
【问题讨论】:
标签: javascript web-audio-api web-mediarecorder