使用recordrtc进行webrtc电话会议录音
Webrtc conference call recording using recordrtc
我正在使用 Angular 7 和 WebRTC 构建新应用程序,并且我使用 recordRTC.js 来录制(音频和视频)我的问题是当我录制多个流时,只录制了第一个流的音频。
public addStreamToRecorder(stream: MediaStream)
{
if (!this.recorder)
{
this.recorder = RecordRTC([stream],{type: "video"});
this.recorder.startRecording();
}
else
{
this.recorder.getInternalRecorder().addStreams([stream]);
}
}
经过调查我发现 reocrdrtc 中的 appendStreams 函数不能混合音频
我通过将 recordRTC 中的 appendStreams 函数更新为最新版本解决了这个问题,我从 MultiStreamRecorder (https://github.com/streamproc/MediaStreamRecorder)
将 recordRTC 中的 appendStreams 替换为
this.appendStreams = function (streams) {
if (!streams) {
throw 'First parameter is required.';
}
if (!(streams instanceof Array)) {
streams = [streams];
}
arrayOfMediaStreams.concat(streams);
streams.forEach(stream => {
if (stream.getTracks().filter(function (t) {
return t.kind === 'video';
}).length) {
var video = getVideo(stream);
video.stream = stream;
videos.push(video);
}
if (stream.getTracks().filter(function (t) {
return t.kind === 'audio';
}).length && this.audioContext) {
var audioSource = this.audioContext.createMediaStreamSource(stream);
audioSource.connect(this.audioDestination);
self.audioSources.push(audioSource);
}
});
};
我正在使用 Angular 7 和 WebRTC 构建新应用程序,并且我使用 recordRTC.js 来录制(音频和视频)我的问题是当我录制多个流时,只录制了第一个流的音频。
public addStreamToRecorder(stream: MediaStream)
{
if (!this.recorder)
{
this.recorder = RecordRTC([stream],{type: "video"});
this.recorder.startRecording();
}
else
{
this.recorder.getInternalRecorder().addStreams([stream]);
}
}
经过调查我发现 reocrdrtc 中的 appendStreams 函数不能混合音频
我通过将 recordRTC 中的 appendStreams 函数更新为最新版本解决了这个问题,我从 MultiStreamRecorder (https://github.com/streamproc/MediaStreamRecorder)
将 recordRTC 中的 appendStreams 替换为
this.appendStreams = function (streams) {
if (!streams) {
throw 'First parameter is required.';
}
if (!(streams instanceof Array)) {
streams = [streams];
}
arrayOfMediaStreams.concat(streams);
streams.forEach(stream => {
if (stream.getTracks().filter(function (t) {
return t.kind === 'video';
}).length) {
var video = getVideo(stream);
video.stream = stream;
videos.push(video);
}
if (stream.getTracks().filter(function (t) {
return t.kind === 'audio';
}).length && this.audioContext) {
var audioSource = this.audioContext.createMediaStreamSource(stream);
audioSource.connect(this.audioDestination);
self.audioSources.push(audioSource);
}
});
};