MediaRecorder - об'єкт для запису медіа.
var mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder - змінна якій присвоюється об'єкт MediaRecorder
stream - медіа потік, об'єкт MediaStream з якого буде виконуватися запис.
options - не обов'язково вказувати. Об'єкт який містить параметри запису.
MediaRecorder об'єкт для запису медіа з медіа потоку.
Об'єкт записує медіа потік у тип даних Blob.
При створенні о'бєкта вказується MediaStream який необхідно записати.
При отримані даних з медіа потоку виникає подія MediaRecorder.ondataavailable, яка отримує дані типу Blob.
Приклад запису відео з камери і звуку з мікрофона:
function stopRecord(){//функція для зупинення запису і відтворення
record.requestData();
record.stop();
var tracks=record.stream.getTracks(); //отримуємо всі медіа потоки
for(var i=0;i<tracks.length;i++)tracks[i].stop(); //зупиняємо медіа потоки
var video=document.getElementById('video');
//присвоюємо записане відео для відворення у елементі video
video.src= window.URL.createObjectURL(new Blob(dani));
//розпочинаємо відтворювати записане відео
video.play().then().catch(function(e){alert(e);});
}
var record, dani=[];
//отримуємо дозвіл на пристрій і медіа потік
navigator.mediaDevices.getUserMedia({video:true, audio:true}).then(function(stream){
record=new MediaRecorder(stream); //створюємо об'єкт для запису з медіа потоку
record.addEventListener('dataavailable',function(e){ //подія отримання записаних даних з медіа потоку
dani.push(e.data); //додаємо записані дані
});
record.start(500); //починаємо запис, запис даних кожних 500 мс
setTimeout(stopRecord,3000); //зупиняємо запис через 3 секунди
}
).catch(function(e){alert(e);});
Приклад запису і завантаження відео з камери:
var dani=[], rec;
navigator.mediaDevices.getUserMedia({video:true}).then(
function(stream){
rec=new MediaRecorder(stream, {mimeType:'video/webm'}); //створюємо об'єкт для запису
rec.ondataavailable=function(e){
dani.push(e.data); //додаємо дані запису
};
rec.start(250); //розпочинаємо запис
function stopRec(){
rec.requestData();
rec.stop();
rec.stream.getTracks()[0].stop();
//відкриваємо у новому вікні записане відео
var w=window.open( URL.createObjectURL(new Blob(dani, {type : 'video/webm'})) );
}
setTimeout(stopRec, 3000);
}
).catch(function(e){alert(e);});