Я читаю поток с внешней видеокамеры 1080p и 720p через API getUserMedia со следующей конфигурацией
let c_constraints = {
audio: false,
video: {
deviceId: { exact: videoValue },
width: { min: 320, ideal: 1280, max: 1920 },
height: { min: 144, ideal: 720, max: 1080 },
framerate: { min: 15, ideal: 30, max: 60 }
}
}
navigator.mediaDevices.getUserMedia(c_constraints)
.then((stream) => c_handleStream(stream))
.catch((e) => c_handleError(e));
И записываем поток, используя следующие
try {
c_recorder = new MediaRecorder(currentCameraStream);
} catch (e) {
throw e
}
Проблема -> это отлично работает на устройствах высокого класса, но на устройстве с 4 ГБ ОЗУ, Intel Core i3 при записи в 1080p и 720p я получаю лаги, а видео прерывистое только в течение первых 3 секунд, но оставшееся видео в порядке.
Кроме того, при воспроизведении этого записанного видео в медиаплеере VLC таймер сразу перескакивает с 00:01 на 00:03,
если бы это была проблема с памятью / буфером, это повлияло бы и на другие капли. Мне что-то не хватает, следует ли использовать MediaRecorder по-другому или с другими параметрами?
PS: я попытался использовать RecordRTC от сэра Муаза Хана, но это кажется тяжелым для ЦП, поскольку загрузка ЦП превышает 70% на вышеупомянутой машине, что делает машину очень медленной.
Пожалуйста, пролейте свет на это.