Запись видео в Edge с использованием HTML5

Я пытаюсь записывать видео с помощью HTML5 API. Я хочу, чтобы это решение было кроссплатформенным и должно работать, по крайней мере, в браузерах Chrome, Firefox и Edge. Я пробовал со следующим кодом

navigator.mediaDevices.getUserMedia({
  audio: true,
  video: true
}).then((mediaStream) => {

  const video = document.querySelector('video');
  const url = window.URL.createObjectURL(mediaStream);
  video.src = url;
});

Приведенный выше код отображает видео в Chrome и Edge. Когда я пытаюсь захватить байты с помощью MediaRecorder API, он работает только в Chrome, а не в Edge. Подскажите, пожалуйста, что можно сделать.

const recorder = new MediaRecorder(mediaStream);
recorder.ondataavailable = onDataAvailable
...
function onDataAvailable(d){
   //d.data is populated in Chrome but not in Edge.
}

Пожалуйста, предложите, как я могу захватить байты, чтобы их можно было сохранить на сервере.

Я попробовал MediaStreamRecorder, но это тоже не сработало с Edge.

Обновление: я нашел несколько подходов, которые указывают на использование Canvas в качестве опции для рендеринга кадров и захвата байтов. Затем используйте requestAnimationFrame, чтобы продолжить захват видео. Хотя это может сработать, я все же открыт для любых других лучших предложений.


person CuriousMind    schedule 10.05.2018    source источник
comment
Поэтому сначала не используйте URL.createObjectURL с MediaStream, вместо этого установите srcObject вашего MediaElement непосредственно в MediaStream. Теперь Edge не поддерживает MediaRecorder API (это на рассмотрении), так что это не годится.   -  person Kaiido    schedule 16.05.2018
comment
Единственный способ - нарисовать видеокадры на холсте, экспортировать каждый кадр как отдельное изображение, использовать API веб-аудио для извлечения необработанных данных PCM звуковой дорожки и, наконец, перепаковать все в видео. формат. Я не верю, что это можно сделать в реальном времени, и, вероятно, вам потребуется больше времени, чтобы разработать это, чем ждать, когда IE реализует этот API.   -  person Kaiido    schedule 16.05.2018
comment
Тебе повезло? В настоящее время я сам против этого, но на самом деле не очень хорошо разбираюсь в том, как с этим справиться (меня даже не волнует, является ли это реализация, специфичная для Edge)   -  person Peter Mellett    schedule 10.08.2018
comment
Привет, @Peter Mellet, мне не удалось найти надежного решения для Edge. Были предложения отказаться от ORTC или webRTC для браузера Edge и записывать поток с помощью медиа-серверов, таких как kurento. Хотя я мог записывать видео, качество видео было большим вопросом из-за переменной пропускной способности.   -  person CuriousMind    schedule 11.08.2018


Ответы (1)


API MediaRecorder, похоже, реализован только в FireFox и Chrome.

https://caniuse.com/#search=MediaRecorder

Я всегда проверяю caniuse.com на предмет поддержки браузером новых API!

person Zouhir    schedule 15.05.2018
comment
Привет, Зухир, спасибо за ответ. Но это не отвечает на мой вопрос. Мне известен сайт caniuse. Я ищу надежный способ записи видео в Edge. - person CuriousMind; 16.05.2018