MediaRecorder.ondataavailable

MediaRecorder.ondataavailable обработчик события (часть MediaStream Recording API) обрабатывает событие dataavailable, позволяет выполнить код, когда тип данных Blob, представляющий обработанные данные становиться доступным для использования.

Событие dataavailable вызывается когда MediaRecorder доставляет медиа данные в ваше приложение для использования. Они представляются в виде объекта типа Blob, содержащего данные. Это происходит в четырёх ситуациях:

  • Когда медиа поток завершается, любые мультимедийные данные ещё не доставленные в обработчик ondataavailable немедленно передаются в объект Blob.
  • При вызове метода MediaRecorder.stop() , порция медиаданных, объем которых был захвачен с момента начала записи или после последнего вызова события dataavailable помещаются в объект Blob; после этого захват завершается.
  • При вызове метода MediaRecorder.requestData() порция медиаданных, объем которых был захвачен с момента начала записи, или после последнего вызова события dataavailable помещаются в вновь созданный объект типа Blob , и захват порций медиаданных продолжается уже в этот новый объект blob.
  • Если свойство timeslice передаётся в метод MediaRecorder.start(), который запускает захват порций медиаданных, событие dataavailable запускается каждые timeslice миллисекунд. Это значит, что каждый объект типа blob будет иметь специфический размер (за исключением последнего, который может быть короче, содержащий все, что осталось с момента последнего события ). Поэтому, если метод выглядит так : recorder.start(1000); то событие dataavailable будет запускаться каждую секунду общего потока медиа захвата, и обработчик события будет вызываться каждую секунду, содержащий в параметре объект типа blob , который будет содержать объем порции записи медиаданных продолжительностью в одну секунду. Можно использовать свойство timeslice вместе с MediaRecorder.stop() и MediaRecorder.requestData() для создания нескольких объектов типа blob одинакового объёма данных , плюс последние короткие объекты типа blob.

Примечание: Медиаданные, содержащиеся в объекте типа Blob доступны в свойстве data , возвращаемого в параметре объекта события dataavailable.

Синтаксис

MediaRecorder.ondataavailable = function(event) { ... }
MediaRecorder.addEventListener('dataavailable', function(event) { ... })

Пример

js
...

  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
MediaStream Recording
# dom-mediarecorder-ondataavailable

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
dataavailable event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также