У меня есть этот простой код, чтобы получить куски видеопотока и воспроизводить их в MediaSource. Я вижу видео, но иногда он останавливается. Он может работать в течение нескольких секунд или в течение нескольких минут. Но, наконец, в какой-то момент он останавливается. chrome: // media-internals/не показывает ошибок.Слушать фрагменты MediaRecorder в MediaSource HTML5 - видео заморожено
Что здесь не так?
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
var mediaSource = new MediaSource();
var constraints = {
"audio": true,
"video": {
"mandatory": {
"minWidth": 320, "maxWidth": 320,
"minHeight": 240, "maxHeight": 240
}, "optional": []
}
};
window.mediaSource = mediaSource;
var sourceBuffer;
var video = document.querySelector('#video');
window.video = video;
video.src = window.URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', function (e) {
console.log("sourceopen");
sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
window.sourceBuffer = sourceBuffer;
}, false);
mediaSource.addEventListener('error', function (e) {
console.log("error", e)
}, false);
var stack = [];
video.play();
navigator.getUserMedia(constraints, function (stream) {
console.log("stream", stream);
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.ondataavailable = function (e) {
var reader = new FileReader();
reader.addEventListener("loadend", function() {
var arr = new Uint8Array(reader.result);
sourceBuffer.appendBuffer(arr);
});
reader.readAsArrayBuffer(e.data);
};
mediaRecorder.start(100);
}, function (e) {
console.log(e)
});
Вот JSFIDDLE, который будет пытаться это сделать: https://jsfiddle.net/stivyakovenko/fkt89cLu/6/ Я использую Chrome в качестве основной цели.
Ваш пример работает в моем браузере UserAgent: "Mozilla/5.0 (Windows NT 10,0; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/50.0.2661.102 Safari/537.36" – Steve
его просто вопрос времени. Если вы подождете достаточно (1-2 минуты, он замерзнет). Мой хром точно такой же. –
Я оставил его на 15+ минут, это было прекрасно, также я заметил, что когда у меня есть ваш запуск, и я запускаю свой код, мой код также работает [ссылка] (http://stackoverflow.com/questions/37665469/ mediasource-randomly-stops-video? noredirect = 1 # comment62899304_37665469), но когда я закрою твою, он замораживает – Steve