Мое веб-приложение позволяет пользователям динамически создавать видео и аудио файлы с одной и той же страницы, часто вращаясь между ними.
Каждое действие записи имеет свою собственную реализацию и логику, включая свои собственные MediaStreams.
Проблема возникает, когда я инициализирую аудиопоток, а затем пытаюсь инициализировать видеопоток. Запись работает (как видео, так и аудио, она может быть воспроизведена после завершения записи), но сам видеопоток отображается пустым.
Этого не происходит, когда я создаю экземпляр видеопотока без предварительного создания экземпляра аудиопотока - он работает нормально, пока я не попытаюсь записать звук, а затем возвращаюсь, чтобы попытаться записать видео.
Я подтвердил, что видеопоток содержит как аудио, так и видео дорожки, когда он создается. Я не могу понять, почему видео-трек выглядит пустым.
Чего мне не хватает?
Настройка для записи видео с использованием базового 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();