我正在为 chrome 商店构建一个屏幕录像机插件。我正在将麦克风的音轨添加到包含(屏幕的视频轨道 + 系统音轨)的媒体流中。因此最终流包含 2 个音轨,一个是麦克风,另一个是系统音频。
当我将此流传递给 MediaRecorder(stream)时,在最终视频中,我只能收听stream.getAudioTracks()中索引为 0 的单个音频,即 MediaRecorder 仅录制单个音轨。
那么如何使用 MediaRecorder 录制包含多音轨的流呢?
我正在为 chrome 商店构建一个屏幕录像机插件。我正在将麦克风的音轨添加到包含(屏幕的视频轨道 + 系统音轨)的媒体流中。因此最终流包含 2 个音轨,一个是麦克风,另一个是系统音频。
当我将此流传递给 MediaRecorder(stream)时,在最终视频中,我只能收听stream.getAudioTracks()中索引为 0 的单个音频,即 MediaRecorder 仅录制单个音轨。
那么如何使用 MediaRecorder 录制包含多音轨的流呢?
您可以查看Muaz Khan 的多流混合库。或者你可以这样做:
const screenStream;
const micStream;
const remoteStream;
// merge audio from remote stream and micStream
const audioCtx = new AudioContext();
const source1 = audioCtx.createMediaStreamSource(micStream);
const source2 = audioCtx.createMediaStreamSource(remoteStream);
const destination = audioCtx.createMediaStreamDestination();
//connect sources to destination
// you can add gain nodes if you want
source1.connect(destination);
source2.connect(destination);
const outputStream= new MediaStream();
outputStream.addTrack(screenStream.getVideoTracks()[0]);
outputStream.addTrack(destination.stream.getAudioTracks()[0]);