Web Audio API MediaElementSource节点和SoundCloud无法使用效果?

时间:2013-08-13 17:19:39

标签: javascript html5 soundcloud web-audio

我使用的是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的流声音吗?

1 个答案:

答案 0 :(得分:4)

您需要等待音频元素上的canplaythrough事件触发,然后才能将其与createMediaElementSource一起使用。

所以只需添加事件监听器,并等到回调触发,然后再分配source = context.createMediaElementSource(audio);并建立所有连接。

这是一个更新的jsFiddle,它可以做你想做的事:http://jsfiddle.net/nwaH3/3/