MediaRecorder 基本格式
let mediaRecorder = New MediaRecorder(stream, [options])
参数 |
说明 |
stream |
媒体流,可以从getUserMedia,<video>,<audio>,<canvas> 等获取 |
options |
限制选项 |
options 限制选项
选项 |
说明 |
mimeType (指定录制的音频还是视频以及录制的格式) |
1.vide/webm (或者video/mp4)等 2.audio/webm 3.video/webm;codecs=vp8 4.vide/webm;codecs=h264 5.audio/webm; codecs=opus |
audioBitsPerSecond |
音频码率 |
videoBitsPerSecond |
视频码率(码率越高,清晰度越高) |
bitsPerSecond |
整体码率 |
MediaRecorder API
- MediaRecorder.start(timeslice)
开始录制媒体,timeslice是可选的。
如果设置了会按时间切片存储数据,若不设置,所有录制数据都会存储到一个大的Buffer中
- MediaRecorder.stop()
停止录制,会触发包括最终Bolb数据的 detaavailable事件
- MediaRecorder.pause()
暂停录制
- MediaRecorder.resume()
恢复录制
- MediaRecorder.isTypeSupported()
检查支持录制的文件格式
MediaRecorder 事件
- MediaRecorder.ondataavailable
当数据有效时触发,可监听此事件,当数据有效,存储到缓冲区中,会传event和data,data为真正数据
每次记录一定事件的数据时,会定期触发。没有指定时间片,则记录整个数据时触发
- MediaRecorder.onerror
当有错误发生时,录制会自动被停止
JavaScript 几种存储数据方式
- 字符串
- Blob
十分高效的和存储区域,Buffer 可放到Blob,可将整个缓存区写入文件中
- ArrayBuffer
可通过 Blob对 Buffer做各种操作
- ArrayBufferView
各种各样的 Buffer,都可以做 Blob的参数
生成文件用 Blob,底层数据一般用 ArrayBuffer或 ArrayBufferView
注:移动端兼容性较差,iOS不兼容,Android支持Chrome和微信