我正在为Chrome商店构建一个屏幕录像机插件。我正在将麦克风的音频轨道添加到媒体流中,其中包含(屏幕的视频轨道+系统音频轨道)。因此,最终流包含2个音轨,一个是麦克风,另一个是系统音频。
当我将此流传递给MediaRecorder(stream)时,比最终视频中的声音只能听stream.getAudioTracks()中0索引处的单个音频,即MediaRecorder为仅录制单个音轨。
那么如何使用MediaRecorder录制包含多条音轨的流?
您可以查看Muaz Khan's Library以进行多流混合。或者您可以像这样处理。
const screenStream;
const micStream;
const remoteStream;
// merge audio from remote stream and micStream
const audioContext = 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]);