Видеозапис с 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. Когато се опитвам да заснема байтове с помощта на API на MediaRecorder, той работи само в 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 не поддържа API на MediaRecorder (това е в процес на разглеждане все пак), така че е забранено.   -  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