Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
MediaStream Recording API 有时简称为 Media Recording API 或者 MediaRecorder API,与媒体捕捉与媒体流 API 和 WebRTC API 密切相关。MediaStream Recording API 使得捕获通过 MediaStream 或者HTMLMediaElement 对象产生的用于分析、加工或者保存到硬盘的数据成为可能。它也非常容易让人们使用。
MediaStream Recording API 由一个主接口MediaRecorder组成,这个接口负责的所有工作是从MediaStream获取数据并将其传递给你进行处理。数据通过一系列 dataavailable 事件传递,这些数据已经成为你创建 MediaRecorder 时所声明的格式。然后,你可以进一步处理数据,或者根据需要将其写入文件。
记录一个流的过程是非常容易的:
备注:单单使用包含已经录制好媒体切片的Blobs 将大可不能单独播放。媒体在重放之前需要重新组装。
如果在录制过程中出错,error 事件将会传给MediaRecorder. 你可以设置onerror去监听 error 事件。
例子中,我们使用 Canvas 作为MediaStream的源,在 9 秒后停止录音。
你也可以使用 MediaRecorder 对象的属性去决定录制过程的状态,用 pause() 和 resume() 方法暂停或者继续媒体源的录制。
如果你需要检查一个特殊的 MIME 类型是否被支持,使用MediaRecorder.isTypeSupported().
如果你的目标是记录摄像头或麦克风输入,你可能希望在构建 MediaRecorder 之前检查可用的输入设备。这时,你需要调用 navigator.mediaDevices.enumerateDevices() 来得到可使用的媒体设备。你可以检查此列表,发现潜在的设备,甚至在有需要的时候过滤掉设备。
在这块代码中,enumerateDevices() 被用来检查可利用的设备,找到那些音频输入设备,创建<option> 元素,之后添加到<select>元素,代表输入源选择器 .
类似的代码可以用来让用户限制他们希望使用的设备。
更多关于 MediaStream Recording API 的使用,查看 Using the MediaStream Recording API, 这个显示了如何使用 API 来记录音频剪辑。另一篇文章,Recording a media element, 介绍了如何从 <audio> 或<video> 元素 接收信息流和如何使用接收到的信息流(这个案例中,接收、存到硬盘)。
Each time a chunk of media data is finished being recorded, it's delivered to consumers in Blob form using a BlobEvent of type dataavailable.
MediaRecorderThe primary interface that implements the MediaStream Recording API.
MediaRecorderErrorEventThe interface that represents errors thrown by the MediaStream Recording API. Its error property is a DOMException that specifies that error occurred.
| MediaStream Recording |
启用 JavaScript 以查看此浏览器兼容性表。