可利用HTML5 MediaRecorder API实现网页录音:先检测兼容性并请求麦克风权限;再初始化MediaRecorder实例并设置音频参数;接着控制开始、暂停、停止状态;然后合并Blob片段生成可下载音频文件;最后处理异常与设备中断。

如果您希望在网页中直接实现录音功能,可以利用HTML5提供的MediaRecorder API捕获用户麦克风输入。以下是实现此功能的具体步骤:
一、检查浏览器兼容性并请求麦克风权限
MediaRecorder API并非在所有浏览器中都完全支持,需先检测是否可用,并主动请求用户授权访问媒体设备。未获得授权将无法启动录音流程。
1、使用navigator.mediaDevices.getUserMedia({ audio: true })发起麦克风访问请求。
2、在Promise成功回调中获取MediaStream对象,失败时捕获NotAllowedError或NotFoundError异常。
立即学习“前端免费学习笔记(深入)”;
3、若MediaRecorder构造函数未定义,则提示用户更换支持MediaRecorder的现代浏览器(如Chrome 69+、Firefox 63+、Edge 79+)。
二、初始化MediaRecorder实例并设置音频编码参数
MediaRecorder需绑定有效的音频流,并可指定输出格式与编码配置,以影响录制质量与兼容性。默认MIME类型为audio/webm,但部分环境需显式声明。
1、创建MediaRecorder实例:const recorder = new MediaRecorder(stream, { mimeType: 'audio/webm; codecs=opus' });
2、监听recorder.ondataavailable事件,该事件在每次生成音频数据块时触发,用于收集Blob片段。
3、监听recorder.onstop事件,在录音结束时合并所有Blob片段为完整音频文件。
三、控制录音状态:开始、暂停、停止
MediaRecorder提供明确的状态机控制接口,通过调用对应方法切换内部状态。状态非法时会抛出InvalidStateError,需确保仅在inactive或paused状态下调用start(),仅在recording状态下调用pause()或stop()。
1、调用recorder.start()启动录音,可传入毫秒级timeslice参数以控制dataavailable事件触发频率。
标签: html 前端 html5 编码 浏览器 edge ai stream
还木有评论哦,快来抢沙发吧~