MediaRecorder: requestData() 方法
MediaRecorder 接口的 requestData() 方法用于触发一个 dataavailable 事件,该事件包含一个 Blob 对象,其中是调用该方法时捕获到的媒体数据。然后你可以按需获取并操作这个 Blob。
当调用 requestData() 方法时,浏览器会排队一个任务来执行以下步骤:
- 如果
MediaRecorder.state是 "inactive"(非活动状态),则抛出一个 DOMInvalidState错误并终止这些步骤。如果MediaRecorder.state不是 "inactive",则继续执行下一步。 - 触发一个
dataavailable事件,其中包含当前捕获数据的Blob(该 Blob 可通过事件的data属性访问)。 - 创建一个新的 Blob,并将后续捕获的数据放入其中。
语法
js
requestData()
参数
无。
返回值
无(undefined)。
异常
InvalidStateErrorDOMException-
如果
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 |
浏览器兼容性
加载中…
另见
- 使用 MediaStream Recording API
- Web Dictaphone:MediaRecorder + getUserMedia + Web Audio API 可视化演示,由 Chris Mills 制作(GitHub 源代码)。
- simpl.info MediaStream 录制演示,由 Sam Dutton 制作。
Navigator.getUserMedia()