MediaRecorder

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);});