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();

チェーンは Oscillator ノードで動作します。その理由は何ですか?

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 に答える