MediaRecorder.ondataavailable event handler (part of the MediaStream 录制 API ) handles the dataavailable event, letting you run code in response to Blob data being made available for use.

dataavailable event is fired when the MediaRecorder delivers media data to your application for its use. The data is provided in a Blob object that contains the data. This occurs in four situations:

  • When the media stream ends, any media data not already delivered to your ondataavailable handler is passed in a single Blob .
  • MediaRecorder.stop() is called, all media data which has been captured since recording began or the last time a dataavailable event occurred is delivered in a Blob ; after this, capturing ends.
  • MediaRecorder.requestData() is called, all media data which has been captured since recording began or the last time a dataavailable event occurred is delivered; then a new Blob is created and media capture continues into that blob.
  • timeslice property was passed into the MediaRecorder.start() method that started media capture, a dataavailable event is fired every timeslice milliseconds. That means that each blob will have a specific time duration (except the last blob, which might be shorter, since it would be whatever is left over since the last event). So if the method call looked like this — recorder.start(1000); — the dataavailable event would fire after each second of media capture, and our event handler would be called every second with a blob of media data that's one second long. You can use timeslice alongside MediaRecorder.stop() and MediaRecorder.requestData() to produce multiple same-length blobs plus other shorter blobs as well.

Blob containing the media data is available in the dataavailable event's data 特性。

句法

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

范例

...
  var chunks = [];
  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);
  }
...
					

规范

规范 状态 注释
MediaStream 录制
The definition of 'MediaRecorder.ondataavailable' in that specification.
工作草案 初始定义

浏览器兼容性

The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
ondataavailable Chrome 49 Edge 79 Firefox 25 IE No Opera 36 Safari No WebView Android 49 Chrome Android 49 Firefox Android 25 Opera Android 36 Safari iOS No Samsung Internet Android 5.0

图例

完整支持

完整支持

不支持

不支持

另请参阅

元数据

  • 最后修改: