我使用的是SoundCloud网址audio.src
。当我通过延迟链运行它时,它只播放未处理的版本。
这是小提琴:
http://jsfiddle.net/ehsanziya/nwaH3/
var context = new webkitAudioContext();
var audio = new Audio(); //creates a HTML5 Audio Element
url = 'http://api.soundcloud.com/tracks/33925813/stream' + '?client_id=c625af85886c1a833e8fe3d740af753c';
//wraps the soundcloud stream to an audio element.
audio.src = url;
var source = context.createMediaElementSource(audio);
var input = context.createGainNode();
var output = context.createGainNode();
var fb = context.createGainNode();
fb.gain.value = 0.4;
var delay = context.createDelayNode();
delay.delayTime.value = 0.5;
//dry
source.connect(input);
input.connect(output);
//wet
input.connect(delay);
delay.connect(fb);
fb.connect(delay);
delay.connect(output);
source.mediaElement.play();
该链与振荡器节点一起使用。 它是什么原因?
还有其他方法可以使用Web Audio API处理来自SoundCloud的流声音吗?
答案 0 :(得分:4)
您需要等待音频元素上的canplaythrough
事件触发,然后才能将其与createMediaElementSource
一起使用。
所以只需添加事件监听器,并等到回调触发,然后再分配source = context.createMediaElementSource(audio);
并建立所有连接。
这是一个更新的jsFiddle,它可以做你想做的事:http://jsfiddle.net/nwaH3/3/