我正在开发html / JS游戏,我想从服务器(nodeJS)上的放射学等网络流中读取音频并进行分析。
我希望服务器执行的过程是:
。从网络加载音频,例如:http://streaming.radionomy.com/kiRyyy?lang=en%2cen-US%3bq%3d0.9%2cpt%3bq%3d0.8%2cpt-PT%3bq%3d0.7;
。使用音频上下文读取/分析音频;
我已经使用以下代码开发了客户端:
audio = new Audio();
audio.src = "http://streaming.radionomy.com/kiRyyy?lang=en%2cen-US%3bq%3d0.9%2cpt%3bq%3d0.8%2cpt-PT%3bq%3d0.7";
context = new AudioContext();
analyser = context.createAnalyser();
source = context.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(context.destination);
fbc_array = new Uint8Array(analyser.frequencyBinCount);
...
analyser.getByteFrequencyData(fbc_array);
现在我想要一模一样的东西,但是在我的节点服务器上。
我已经尝试过web-audio-api npm,但是只能从本地mp3文件读取,而我想从URL读取,例如:http://streaming.radionomy.com/kiRyyy?lang=en%2cen-US%3bq%3d0.9%2cpt%3bq%3d0.8%2cpt-PT%3bq%3d0.7
var fs = require('fs')
, AudioContext = require('web-audio-api').AudioContext
, context = new AudioContext
context.outStream = process.stdout
fs.readFile(__dirname + '/sounds/powerpad.wav', function(err, buffer) {
if (err) throw err
context.decodeAudioData(buffer, function(audioBuffer) {
var bufferNode = context.createBufferSource()
bufferNode.connect(context.destination)
bufferNode.buffer = audioBuffer
bufferNode.loop = true
bufferNode.start(0)
})
})
}
web-audio-api npm是最好的方法吗?如果是这样,我该如何从URL读取音频而不是在本地读取文件?