Javascript-动态流媒体音频(Web音频API和XHR)
我运行了一个简单的xmlhttprequest来提取音频文件,提取完成后,它会解码音频并播放Javascript-动态流媒体音频(Web音频API和XHR),javascript,audio,xmlhttprequest,streaming,web-audio-api,Javascript,Audio,Xmlhttprequest,Streaming,Web Audio Api,我运行了一个简单的xmlhttprequest来提取音频文件,提取完成后,它会解码音频并播放 var xhr = new XMLHttpRequest(); xhr.open('GET', /some url/, true); xhr.responseType = 'arraybuffer'; xhr.onload = function() { decode(xhr.response); }
var xhr = new XMLHttpRequest();
xhr.open('GET', /some url/, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function() {
decode(xhr.response);
}.bind(this);
xhr.send(null);
但是,问题是,只有在加载/完成下载请求后,文件才会解码。有没有一种方法可以在不必等待下载完成的情况下进行音频流传输?,如果不使用
标记您仍然需要HTML5音频
对象,但是您可以使用MediaElementAudioSourceNode
以及音频
元素来利用Web API,而不是直接使用它并播放它
摘自
而不是按照通常的方式直接通过
发出XMLHttpRe请求,然后解码缓冲区,您可以使用
将媒体流音频源节点(MediaElementAudioSourceNode)设置为
创建行为与音频源节点非常相似的节点
(AudioSourceNode),但包装现有标记。一旦我们有了这个
节点连接到我们的音频图,我们可以使用我们的网络知识
音频API做伟大的事情。这个小例子应用了低通滤波器
过滤到标记:
示例代码:
window.addEventListener('load', onLoad, false);
function onLoad() {
var audio = new Audio();
source = context.createMediaElementSource(audio);
var filter = context.createBiquadFilter();
filter.type = filter.LOWPASS;
filter.frequency.value = 440;
source.connect(this.filter);
filter.connect(context.destination);
audio.src = 'http://example.com/the.mp3';
audio.play();
}