MediaRecorder: requestData() 方法

Baseline 已广泛支持

此特性已得到良好支持,可在多种设备和浏览器版本上使用。自 2021 年 4 月起,所有浏览器均已支持此特性。

MediaRecorder 接口的 requestData() 方法用于触发一个 dataavailable 事件,该事件包含一个 Blob 对象,其中是调用该方法时捕获到的媒体数据。然后你可以按需获取并操作这个 Blob。

当调用 requestData() 方法时,浏览器会排队一个任务来执行以下步骤:

  1. 如果 MediaRecorder.state 是 "inactive"(非活动状态),则抛出一个 DOM InvalidState 错误并终止这些步骤。如果 MediaRecorder.state 不是 "inactive",则继续执行下一步。
  2. 触发一个 dataavailable 事件,其中包含当前捕获数据的 Blob(该 Blob 可通过事件的 data 属性访问)。
  3. 创建一个新的 Blob,并将后续捕获的数据放入其中。

语法

js
requestData()

参数

无。

返回值

无(undefined)。

异常

InvalidStateError DOMException

如果 MediaRecorder 当前处于 "inactive"(非活动状态)状态,则会抛出此异常;当 MediaRecorder 未处于活动状态时,你无法捕获录制内容。

示例

js
captureMedia.onclick = () => {
  mediaRecorder.requestData();
  // makes snapshot available of data so far
  // ondataavailable fires, then capturing continues
  // in new Blob
};

规范

规范
MediaStream Recording
# dom-mediarecorder-requestdata

浏览器兼容性

另见