MediaRecorder позволяет записывать только носители одного типа на дорожку. Поэтому я использую JQuery, чтобы получить список всех аудиоэлементов и подключить их к одному и тому же месту назначения аудиоконтекста, чтобы смешать все аудиодорожки в один аудиопоток, чтобы впоследствии записать его в MediaRecorder. То, что у меня есть, работает, но захватывает только первый трек и ни один из остальных.
Есть идеи, почему проходит только один трек?
мой код:
function gettracks(stream){
var i = 0;
var audioTrack ;
var audioctx = new AudioContext();
var SourceNode = [];
var dest = audioctx.createMediaStreamDestination();
$('audio').each( function() {
//the audio element id
var afid = $(this).attr('id');
var audio = $('#'+afid)[0];
console.log('audio id '+ afid+' Audio= '+audio);
SourceNode[i] = audioctx.createMediaElementSource(audio);
//dont forget to connect the wires!
SourceNode[i].connect(audioctx.destination);
SourceNode[i].connect(dest);
audioTrack = dest.stream.getAudioTracks()[0];
stream.addTrack(audioTrack);
i++;
});
}
//from a mousedown event I call
stream = canvas.captureStream();
video.srcObject = stream;
gettracks(stream);
startRecording()
function startRecording() {
recorder = new MediaRecorder(stream, {
mimeType: 'video/webm'
});
recorder.start();
}