xiangyuecn / Recorder

html5 js 录音 mp3 wav ogg webm amr g711a g711u 格式,支持pc和Android、iOS部分浏览器、Hybrid App(提供Android iOS App源码)、微信,提供ASR语音识别转文字 H5版语音通话聊天示例 DTMF编码解码
https://xiangyuecn.github.io/Recorder/
MIT License
4.59k stars 1.01k forks source link

快捷键录音 - 结束录音失败:未采集到录音 #227

Closed ganxiaozhe closed 1 month ago

ganxiaozhe commented 1 month ago

网页上有两个录音逻辑,一是按钮录音,即按住按钮开始录音 rec.start(),松开按钮结束录音 rec.stop()。 二是快捷键录音,即按下空格开始录音 rec.start(),松开空格结束录音 rec.stop()

第一种运行良好,但第二种会出现未采集到录音的报错,但录音时的波形显示是正常的。 请问这是浏览器限制,还是库的问题?

document.onkeydown = (e)=>{
  const code = e.code.toLocaleUpperCase();
  if(code==='SPACE'){recStart();}
};
document.onkeyup = (e)=>{
  const code = e.code.toLocaleUpperCase();
  if(code==='SPACE'){recStop();}
};

function recStart(){rec.start();}
function recStop(){
  rec.stop(async function(blob:Blob, duration:number){
  }, function(msg:string){
    console.log("录音失败:"+msg);
  })
}
xiangyuecn commented 1 month ago

每个调用的地方都打上日志,检查哪里重复调用了导致的状态不正确

ganxiaozhe commented 1 month ago

经排查确实是多次调用 rec.start() 导致的问题,感谢。