嗨,我正在做WebAudio应用编程接口。我读了HTML5 Web Audio API, porting from javax.sound and getting distortion链接,但没有得到好的质量,因为在java am中。我从服务器获得有符号字节的PCM数据。然后我必须将其更改为16位格式。对于更改,我正在使用( firstbyte<<8 | secondbyte ),但我无法获得良好的声音质量。有没有什么问题,在转换或任何其他方式来做,以获得良好的音质?
发布于 2013-07-27 02:17:59
Web Audio API使用从-1到1的32位有符号浮点数,因此我将(希望)向您展示如何操作,而不是您在问题中提到的16位浮点数。
假设您的样本数组名为samples,并存储为从-128到127的2的补数,我认为这应该是可行的:
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);https://stackoverflow.com/questions/8710846
复制相似问题