【问题标题】:HTML5 Web Audio API has strange noise when playing PCM data with AudioBuffer使用 AudioBuffer 播放 PCM 数据时,HTML5 Web Audio API 有奇怪的噪音
【发布时间】:2016-11-09 17:08:06
【问题描述】:

我正在尝试使用 HTML5 Web Audio 逐个缓冲区播放笔记,但我发现笔记开始和结束时会出现奇怪、响亮、不受欢迎的噪音。有没有人知道如何摆脱它?谢谢!

我在这里有一个工作示例,我已经重复了这个注释,所以你会清楚地看到这里的噪音:

https://jsfiddle.net/charrli/ca48tj23/5/

代码如下。我正在产生正弦波:

   var audioContext = new AudioContext();
var audioBuffer;// = new AudioBuffer();
var audioBufferArray;//: number[];
var audioBufferArrayIndex;//: number;
var frameCount = 8192;
    audioBuffer = audioContext.createBuffer(1, frameCount, 44100);

function play(){
    //audioContext = new AudioContext();
      audioBufferArray = this.audioBuffer.getChannelData(0);
        audioBufferArrayIndex = 0;
        for (var i = 0; i < frameCount; i++) {
            audioBufferArray[i] = Math.sin((i%168)/168.0*Math.PI*2);
        }
        var source = this.audioContext.createBufferSource();
                    // set the buffer in the AudioBufferSourceNode
            source.buffer = this.audioBuffer;
                    // connect the AudioBufferSourceNode to the
                    // destination so we can hear the sound
        source.connect(this.audioContext.destination);
                    // start the source playing
        source.start();
}

【问题讨论】:

标签: javascript html audio web-audio-api


【解决方案1】:

您需要平滑波的开始/结束以防止点击

添加这个:

  for (var i = 0; i < 100; i++) {
    audioBufferArray[i] = audioBufferArray[i]*i/100;//fade in
    audioBufferArray[frameCount-i-1] = audioBufferArray[frameCount-i-1]*i/100;//fade out
    }

https://jsfiddle.net/sss1024/ca48tj23/7/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2014-10-11
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多