【问题标题】:Adding audio to an incoming stream during video call to record voice of both parties in a call在视频通话期间向传入流添加音频以录制通话双方的语音
【发布时间】:2021-03-28 00:23:02
【问题描述】:
我创建了一个使用 peer js 发起视频通话的应用。我正在使用 mediarecorder Api 记录来自呼叫者的传入流。但是,我需要在录音中添加呼叫者和接收者的音频,并且视频应该只属于呼叫者(传入流)。
我试过https://github.com/muaz-khan/MultiStreamsMixer 这个。但是,在录制它时,我得到了一个 vlc 无法读取的文件。
我也尝试将本地音轨添加到录制流中,但这不会将 2 个音轨合并为一个,并且只会录制传入流的音频。
【问题讨论】:
标签:
webrtc
web-audio-api
mediastream
mediarecorder-api
【解决方案1】:
我可以通过使用 Web Audio API 来做到这一点。我从两个流中提取音轨,并使用音频上下文将它们合并为一个。
var OutgoingAudioMediaStream = new MediaStream();
OutgoingAudioMediaStream.addTrack(OutgoingStream.getAudioTracks()[0]);
var IncomingAudioMediaStream = new MediaStream();
IncomingAudioMediaStream.addTrack(IncomingStream.getAudioTracks()[0]);
const audioContext = new AudioContext();
audioIn_01 = audioContext.createMediaStreamSource(OutgoingAudioMediaStream);
audioIn_02 = audioContext.createMediaStreamSource(IncomingAudioMediaStream);
dest = audioContext.createMediaStreamDestination();
audioIn_01.connect(dest);
audioIn_02.connect(dest);
dest.stream.addTrack(IncomingStream.getVideoTracks()[0]);
var RecordingStream = dest.stream;
效果很好。