3

我正在为 chrome 商店构建一个屏幕录像机插件。我正在将麦克风的音轨添加到包含(屏幕的视频轨道 + 系统音轨)的媒体流中。因此最终流包含 2 个音轨,一个是麦克风,另一个是系统音频。

当我将此流传递给 MediaRecorder(stream)时,在最终视频中,我只能收听stream.getAudioTracks()中索引为 0 的单个音频,即 MediaRecorder 仅录制单个音轨。

那么如何使用 MediaRecorder 录制包含多音轨的流呢?

4

1 回答 1

7

您可以查看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]);
于 2020-01-31T07:38:34.897 回答