使用 webaudioapi 和 recorder.js 录音时音频信号下降

问题描述 投票:0回答:1

我正在使用网络音频 API 和 recorder.js 录制音频,但是当我下载音频并检查此音频频谱图时。我发现信号下降了几毫秒。没有得到任何解决方案。有人能告诉我应该对代码进行哪些更改吗?任何帮助将不胜感激。

    let gumStream = null;
    let recorder = null;
    let audioContext = null;

  let recordButton = document.getElementById("recordButton");
  let stopButton = document.getElementById("stopButton");
  let pauseButton = document.getElementById("pauseButton");

    const startRecording = () => {
      let constraints = {
        audio: true,
        video: false,
      };
      timer.style.color = "#78CF4D"
      recordButton.disabled = true;
      stopButton.disabled = false;
      pauseButton.disabled = false;
  
      audioContext = new window.AudioContext({
        sampleRate: 16000,
        //bufferLen: 4096
      });
      console.log("sample rate: " + audioContext.sampleRate);
  
      navigator.mediaDevices
        .getUserMedia(constraints)
        .then(function (stream) {
          console.log("initializing Recorder.js ...");
  
          gumStream = stream;
  
          let input = audioContext.createMediaStreamSource(stream);
  
          recorder = new window.Recorder(input, {
            numChannels: 1,
            sampleBits: 16, // 8 or 16
            //bufferLen: 4096,
            mimeType: "audio/wav",
          });
  
          recorder.record();
         
          if (stoptime == true) {
            stoptime = false;
            timerCycle();
          }
        })
        .catch(function (err) {
          //enable the record button if getUserMedia() fails
          timer.style.color = "#7C7F85"
          recordButton.disabled = false;
          stopButton.disabled = true;
          pauseButton.disabled = true;
        });
   
  };

javascript web-audio-api audio-recording getusermedia audiocontext
1个回答
0
投票

我假设您已经在 Chrome(或 Edge 或 Opera)中对此进行了测试。 Chrome 中存在一个长期存在的错误。当您使用

AudioContext
仅录制内容而不播放任何内容时,它有时会插入静音。

https://bugs.chromium.org/p/chromium/issues/detail?id=1016104

不幸的是,这正是 Recorder.js 所做的。

我正在维护一个类似的库,不久前遇到了同样的问题。幸运的是有一个解决方法。 Chrome 的

MediaRecorder
没有同样的错误。它将在没有任何中断的情况下进行记录。它允许录制包装在 webm 容器中的 PCM 音频。我的图书馆用它来录制未压缩的音频。

简而言之,如果您改用

extendable-media-recorder
,我希望沉默会消失。

© www.soinside.com 2019 - 2024. All rights reserved.