2

我使用 SoundCloud URL 作为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 的流式声音吗?

4

1 回答 1

4

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

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

这是一个更新的 jsFiddle,可以满足您的需求:http: //jsfiddle.net/nwaH3/3/

于 2013-08-13T17:33:00.133 回答