Мое веб-приложение позволяет пользователям динамически создавать видео и аудио файлы с одной и той же страницы, часто переключаясь между ними.
Каждое действие записи имеет собственный экземпляр и логику, включая собственные потоки MediaStream.
Проблема возникает, когда я инициализирую аудиопоток, а затем пытаюсь инициализировать видеопоток. Запись работает (как видео, так и аудио, ее можно воспроизвести после завершения записи), но сам видеопоток отображается пустым.
Этого не происходит, когда я создаю экземпляр видеопотока без предварительного создания экземпляра аудиопотока - он работает нормально, пока я не попытаюсь записать звук, а затем вернусь, чтобы попытаться записать видео.
Я подтвердил, что при создании видеопотока присутствуют как аудио, так и видеодорожки. Я не могу понять, почему видеодорожка кажется пустой.
Что мне не хватает?
Настройка записи видео с использованием базового API getUserMedia:
// Start stream
var constraints = {
audio: true,
video: true
};
navigator.mediaDevices.getUserMedia(constraints)
.then(function(mediaStream) { // do stuff with stream }
// Kill stream, both audio and video
mediaStream.getTracks()[0].stop();
mediaStream.getTracks()[1].stop();
Настройка для записи звука. Я использую RecorderJS для записи:
navigator.getUserMedia({ audio: true }, function (stream) {
var input = that.audio_context.createMediaStreamSource(stream);
// Initialize the Recorder Library
var recorder = new Recorder(input);
recorder.record();
}
// Stop recording
this.recorder.stop();
this.audio_stream.getTracks()[0].stop();