通过webAudio API播放pcm数据

您好,我正在使用WebAudio API。 我读了HTML5 Web Audio API,从javax.sound移植并获取失真链接,但没有像java API中那样获得良好质量。我正在从服务器获取带符号字节的PCM数据。 然后我必须将其更改为16位格式。 因为我正在使用(第一字节<< 8 |第二字节),但我无法获得高质量的声音。 转换或其他任何方式可以提高音质吗?


Web Audio API使用从-1到1的32位有符号浮点数,所以这就是我要(希望)告诉你如何去做的,而不是你在问题中提到的16位。

假设你的样本数组被称为samples并被存储为2的恭维从-128到127,我认为这应该工作:

var floats = new Float32Array(samples.length);
samples.forEach(function( sample, i ) {
  floats[i] = sample < 0 ? sample / 0x80 : sample / 0x7F;
});

然后你可以做这样的事情:

var ac = new webkitAudioContext()
  , ab = ac.createBuffer(1, floats.length, ac.sampleRate)
  , bs = ac.createBufferSource();
ab.getChannelData(0).set(floats);
bs.buffer = ab;
bs.connect(ac.destination);
bs.start(0);
链接地址: http://www.djcxy.com/p/57119.html

上一篇: play pcm data by webAudio API

下一篇: MySQL & nested set: slow JOIN (not using index)