use*_*554 7 javascript html5 google-chrome web-audio-api
嗨,我正在使用WebAudio API.我阅读HTML5 Web Audio API,从javax.sound移植并获得失真链接,但没有像java API那样获得良好的质量.我从服务器获取带有签名字节的PCM数据.然后我必须将其改为16位格式.改变我正在使用(firstbyte << 8 | secondbyte)但我无法获得良好的声音质量.转换或任何其他方式有什么问题,以获得良好的声音质量?
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;
});
Run Code Online (Sandbox Code Playgroud)
然后你可以做这样的事情:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3295 次 |
| 最近记录: |