嗨,我正在使用WebAudio API。我读了HTML5 Web Audio API, porting from javax.sound and getting distortion链接,但没有得到良好的Java API.I正在从服务器获取PCM数据签名字节。然后我必须将其更改为16位格式。我正在使用(首字节< < 8 | secondbyte) 但我无法获得高质量的声音。在转换或其他任何方式来获得高质量的声音方面是否存在问题?通过webAudio播放pcm数据API
7
A
回答
4
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);
+0
我想你错过了“bs.buffer = ab;” – CpnCrunch 2013-10-28 22:54:40
相关问题
- 1. 使用GStreamer播放原始PCM数据
- 2. 在.NET Framework 2中播放PCM数据?
- 3. 实时播放生成的PCM数据
- 4. Webaudio,播放声音两次
- 5. 使用音频队列服务通过套接字连接播放PCM数据
- 6. 在Android设备上播放4通道16位PCM音频数据
- 7. 如何在iOS中从服务器播放流式PCM数据?
- 8. 如何在java中播放pcm原始数据
- 9. 如何降低PCM数据的播放速度?
- 10. Firefox WebAudio API
- 11. 通过webRTC播放本地数组数据数据
- 12. DirectSound的:简单的PCM播放
- 13. 在.NET上播放PCM音频流CF
- 14. 用QPython audiostream原始PCM音频播放
- 15. 无法播放PCM> 60KB与AndroidSimpleBufferQueue
- 16. 如何通过AudioTrack播放大型PCM文件? (目前出现错误)
- 17. 用于分析PCM数据的Android API?
- 18. 为什么添加音频分析仪时,声音会停止播放? Webaudio Api
- 19. 通过二维数组循环播放
- 20. 通过java播放音乐
- 21. 无法获得WebAudio通过iOS的8
- 22. 如何通过串口和进程捕获语音PCM数据?
- 23. 使用WebAudio播放.wav文件,由nginx提供
- 24. 如何从类似Android AudioTrack类的服务器播放流PCM数据?
- 25. 获取Android手机中当前正在播放的歌曲的PCM数据
- 26. Youtube播放器Iframe API跳过播放列表中的视频
- 27. 音频文件:仅通过一个扬声器播放数据?
- 28. 通过文件对象中的数据播放视频
- 29. 播放2.3:通过控制器传递模型数据
- 30. 通过熊猫数据框列表循环播放
代码片段总是有帮助的。 – ebidel 2012-01-03 16:58:58
任何人都可以告诉我如何将有符号字节数组转换为Float32Array? – user894554 2012-01-04 09:28:38
不要太高傲,因为官方文档跳过了播放PCM部分(这将是直接功能),并且专注于decodeAudioData(),这更像是一个'帮手',这是一个很好的问题。 – 2013-01-20 20:04:27