首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想使用javascript录制音频输入并将其保存到磁盘

我想使用javascript录制音频输入并将其保存到磁盘
EN

Stack Overflow用户
提问于 2020-11-23 15:39:09
回答 1查看 215关注 0票数 0

嗨,我是一个初学者,所以我没有太多关于javascript的知识,所以请帮助我解决我的问题。我在保存音频输入时遇到问题。保存到磁盘上的音频以某种方式损坏,并且不是正确的(.mp3/.wav)文件。

下面是我的javascript代码

代码语言:javascript
运行
复制
  function saveBlob(blob, fileName) {
      var a = document.createElement("a");
      document.body.appendChild(a);
      a.style = "display: none";
      
      var url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = fileName;
      a.click();
      window.URL.revokeObjectURL(url);
  }

  function startRecording(){

    var device = navigator.mediaDevices.getUserMedia({audio:true});
    var items = [];
    device.then( stream => {
      var recorder = new MediaRecorder(stream);
      recorder.ondataavailable = e => {

        items.push(e.data);
        if(recorder.state == "inactive")
        {
          var blob = new Blob(items, {type: 'audio/wav'});
          alert(blob.type);
          saveBlob(blob, 'myRecording.wav');
        }
      }

      recorder.start();
      setTimeout(()=>{
        recorder.stop();
      }, 4000);

    });
EN

回答 1

Stack Overflow用户

发布于 2020-11-24 04:31:55

我认为问题在于你用错误的mimeType保存了文件。据我所知,目前还没有可以开箱即用录制WAV文件的浏览器。

一种快速修复方法是更改创建文件的部分。

代码语言:javascript
运行
复制
var blob = new Blob(items, {type: recorder.mimeType});
alert(blob.type);
saveBlob(blob, `myRecording.wav${blob.type.split('/')[1].split(';')[0]}`);

或者你可以使用像extendable-media-recorder这样的软件包,它允许直接录制WAV文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64964237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档