--- title: MediaRecorder.ondataavailable slug: Web/API/MediaRecorder/ondataavailable translation_of: Web/API/MediaRecorder/ondataavailable ---
{{APIRef("MediaStream Recording")}}
MediaRecorder.ondataavailable
обработчик события (часть MediaStream Recording API) обрабатывает {{event("dataavailable")}} событие, позволяет выполнить код, когда тип данных {{domxref("Blob")}}, представляющий обработанные данные становиться доступным для использования.
Событие dataavailable
вызывается когда MediaRecorder доставляет медиа данные в ваше приложение для использования. Они представляются в виде объекта типа {{domxref("Blob")}}, содержащего данные. Это происходит в четырёх ситуациях:
ondataavailable
немедленно передаются в объект {{domxref("Blob")}}.dataavailable
помещаются в объект {{domxref("Blob")}}; после этого захват завершается.dataavailable
помещаются в вновь созданный объект типа Blob
, и захват порций медиаданных продолжается уже в этот новый объект blob
.timeslice
передается в метод {{domxref("MediaRecorder.start()")}}, который запускает захват порций медиаданных, событие dataavailable
запускается каждые timeslice
миллисекунд. Это значит, что каждый объект типа blob
будет иметь специфический размер (за исключением последнего, который может быть короче, содержащий все, что осталось с момента последнего события ). Поэтому, если метод выглядит так : recorder.start(1000);
то событие dataavailable
будет запускаться каждую секунду общего потока медиа захвата, и обработчик события будет вызываться каждую секунду, содержащий в параметре объект типа blob
, который будет содержать объем порции записи медиаданных продолжительностью в одну секунду. Можно использовать свойство timeslice
вместе с {{domxref("MediaRecorder.stop()")}} и {{domxref("MediaRecorder.requestData()")}} для создания нескольких объектов типа blob
одинакового объема данных , плюс последние короткие объекты типа blob.
Медиаданные, содержащиеся в объекте типа {{domxref("Blob")}} доступны в свойстве data
, возвращаемого в параметре объекта события {{event("dataavailable")}}.
MediaRecorder.ondataavailable = function(event) { ... }
MediaRecorder.addEventListener('dataavailable', function(event) { ... })
...
mediaRecorder.onstop = function(e) {
console.log("data available after MediaRecorder.stop() called.");
var audio = document.createElement('audio');
audio.controls = true;
var blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' });
var audioURL = window.URL.createObjectURL(blob);
audio.src = audioURL;
console.log("recorder stopped");
}
mediaRecorder.ondataavailable = function(e) {
chunks.push(e.data);
}
...
Specification | Status | Comment |
---|---|---|
{{SpecName("MediaStream Recording", "#widl-MediaRecorder-ondataavailable", "MediaRecorder.ondataavailable")}} | {{Spec2("MediaStream Recording")}} | Initial definition |
{{Compat("api.MediaRecorder.ondataavailable")}}