Tag: webkitaudiocontext

我想实现从MP3audio数据stream到Web

My Client Web(由HTML5实现)从networking服务器(由Node.js实现)获取MP3audio数据,audio数据是16位PCM编码数据和一般二进制数据两种。 我无法解决我所遇到的问题,即使我已经遵循了一些例子和解释。 现在我想知道我怎么可以回放这个可以请指导我为什么在方法'context.decodeAudioData'中得到一个错误? 提前谢谢你的帮助。 祝你好运!〜 —- html5 source code —- <!DOCTYPE html> <html lang="en" manifest="web.appcache"> <head> <meta charset="utf-8" /> <title>index.html</title> <script src="sounds/ufo.js"></script> <script src="js/base64-binary.js"></script> <!– base64-binary.js : https://github.com/alexgibson/offlinewebaudio/blob/master/js/base64-binary.js–> <script type="text/javascript"> var context = new webkitAudioContext(); var ws = new WebSocket("ws://localhost:8080"); ws.binaryType = 'arraybuffer'; ws.onmessage = function (evt) { var byteArray = Base64Binary.decodeArrayBuffer(evt.data); context.decodeAudioData( […]

在javascript中对PCMaudio缓冲区进行降采样

我正在尝试从audioContext下采样的采样率。 我相信它是44100,而我希望它是11025.我以为我可以平均每3个样本,它以正确的速度播放,但是音调太高,就好像我们都在氦气。 在11025个采样下,将float32Array从44100降采样为int16Array的正确方法是什么? var context = new Flash.audioContext(); var audioInput = context.createMediaStreamSource(stream); var recorder = context.createScriptProcessor(null, 1, 1); recorder.onaudioprocess = onAudio; audioInput.connect(recorder); recorder.connect(context.destination); var onAudio = function (e) { var left = e.inputBuffer.getChannelData(0); bStream.write(Flash.convertFloat32ToInt16(left)); } var convertFloat32ToInt16 = function(buffer) { var l = buffer.length; var point = Math.floor(l/3); var buf = new Int16Array(point); for (var […]