Добавление аудио трека в стрим в то время когда MediaRecorder в состоянии 'recording'
Я пытаюсь добавить mediaTrack в MediaStream при активной записи, когда MediaRecorder в состоянии 'recording'
Добавляю трек таким образом:
activeStream.addTrack(newAudioTrack)
После успешного добавления трека на объекте MediaRecorder срабатывает событие onstop и запись прерывается. Можно ли каким либо образом на лету добавлять треки и удалять не прерывая запись?
Ответы (1 шт):
Ответ на этот вопрос от @chrisguttandin с англоязычной ветки мне помог.
You can use an AudioContext to create a fixed MediaStream that you can pass to the MediaRecorder. This allows you to change the input when recording.
const audioContext = new AudioContext();
const mediaStreamAudioDestinationNode = new MediaStreamAudioDestinationNode(audioContext);
const mediaRecorder = new MediaRecorder(mediaStreamAudioDestinationNode.stream);
Let's say you have a MediaStream called initialMediaStream. You could connect it like that:
const mediaStreamAudioSourceNode = new MediaStreamAudioSourceNode(
audioContext,
{ mediaStream: initialMediaStream }
);
mediaStreamAudioSourceNode.connect(mediaStreamAudioDestinationNode);
You can then start recording the initialMediaStream.
mediaRecorder.start();
Later on you can replace the initialMediaStream with anotherMediaStream.
const anotherMediaStreamAudioSourceNode = new MediaStreamAudioSourceNode(
audioContext,
{ mediaStream: anotherMediaStream }
);
anotherMediaStreamAudioSourceNode.connect(mediaStreamAudioDestinationNode);
mediaStreamAudioSourceNode.disconnect();
You could even use GainNodes to apply a cross-fade between the two streams if that's what you want.