WebRTC之MediaRecorder

文章目录

  • 构造
    • 参数
  • 方法
    • MediaRecorder.start(timeslice)
    • MediaRecorder.isTypeSupported()
    • MediaRecorder.resume()
    • MediaRecorder.stop()
    • MediaRecorder.pause()
  • 事件
  • 下载所录制的数据

MediaRecorder这个类是用来对指定的 MediaStream进行录制的。

构造

其构造方法为:

const mediaRecorder = new MediaRecorder(mediaStream, options)

参数

  • mediaStream:这是一个MediaStream类实例对象,是所要录制的流。这个流可以是来自navigator.mediaDevices.getUserMedia创建的流,亦或是来自videoaudio标签的。
  • options:这是一个对象,包含以下字段:
    • mimeType:为MediaRecorder指定录制的类型,是录制视频还是音频
    • audioBitsPerSecond:指定音频的码率
    • videoBitsPerSecond:指定视频的码率
    • bitsPerSecond:可以用来指定视频和音频的比特率,如果以上两个属性只有其中之一被指定,那么此属性可以用来设定另外一个

方法

MediaRecorder.start(timeslice)

开始录制,这个方法接受一个timeslice参数,若设置了这个毫秒值,那么录制的数据会按照设定的值分割成一个个单独的区块。

MediaRecorder.isTypeSupported()

检查当前设置的MIME类型是否被用户的设备所支持

MediaRecorder.resume()

继续录制被暂停的录制

MediaRecorder.stop()

停止录制,同时触发dataavailable事件。

MediaRecorder.pause()

暂停媒体录制

事件

事件里最应该关注的是ondataavailable事件,这个时间会在start方法执行后被触发,如果设置了timeslice,那么则会每隔timeslice毫秒的时间触发一次。

这个事件的回调函数会接受一个事件对象作为参数,对象上有一个data字段,这是一个Blob对象,即录制的数据,可以使用数组将其存储起来

下载所录制的数据

实例化一个新的Blob对象,实例化时将之前存储数据的数组传入,其次传入MIME类型。

接着调用URL.createObjectURL,将刚刚创建的Blob对象传入就可生成一个URL。

然后创建一个a标签,但不显示,将download字段设置成你所希望的文件名,将href字段设置成刚刚生成的URL,最后再调用标签的click方法即可。

你可能感兴趣的:(WebRTC,MediaRecorder)