MediaRecorder.ondataavailable - Web API 接口参考 编辑

MediaRecorder.ondataavailable事件处理程序(part of the MediaStream记录API)处理{{event("dataavailable")}}事件,让您在响应运行代码Blob数据被提供使用。

dataavailable当MediaRecorder将媒体数据传递到您的应用程序以供使用时,将触发事件。数据在包含数据的Blob对象中提供。这在四种情况下发生:

  • 媒体流结束时,所有尚未传递到ondataavailable处理程序的媒体数据都将在单个Blob中传递。
  • 当调用MediaRecorder.stop()时,自记录开始或dataavailable事件最后一次发生以来已捕获的所有媒体数据都将传递到Blob}中;此后,捕获结束。
  • 调用MediaRecorder.requestData() dataavailable时,将传递自记录开始或事件最后一次发生以来捕获的所有媒体数据然后Blob创建一个新文件,并将媒体捕获继续到该blob中。
  • 如果将timeslice属性传递到开始媒体捕获的MediaRecorder.start()方法中,dataavailable则每timeslice毫秒触发一次事件这意味着每个Blob都有特定的持续时间(最后一个Blob除外,后者可能更短,因为它将是自上次事件以来剩下的所有东西)。因此,如果该方法调用看起来像这样- recorder.start(1000);-的dataavailable事件将媒体捕捉的每一秒发生火灾后,我们的事件处理程序将被称为与媒体数据的BLOB每秒即坚持一个第二长。您可以timesliceMediaRecorder.stop()}和MediaRecorder.requestData()}一起使用,以产生多个相同长度的Blob,以及其他较短的Blob。

包含媒体数据的Blobdataavailable事件的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("录像停止");
  }

  mediaRecorder.ondataavailable = function(e) {
    chunks.push(e.data);
  }

...

技术指标

规范状态评论
MediaStream Recording
MediaRecorder.ondataavailable
Working Draft初始定义

浏览器兼容性

BCD tables only load in the browser

此页面中的兼容性表是根据结构化数据生成的。如果您想贡献数据,请查看https://github.com/mdn/browser-compat-data并向我们​​发送请求请求。

也可以看看

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:125 次

字数:7025

最后编辑:8年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文