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

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

BCD tables only load in the browser

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