6

そのため、タグから Web オーディオ ソース ノードを作成しようとしているところに問題があります。コードは次のようになります。

OBJECT.musicContext= new webkitAudioContext();  
OBJECT.audio = new Audio();
OBJECT.audio.src = self.file;
OBJECT.source = OBJECT.musicContext.createMediaElementSource(OBJECT.audio);

var analyser= OBJECT.musicContext.createAnalyser();
analyser.fftSize=1024;
OBJECT.analyser=analyser    

OBJECT.gain = self.musicContext.createGain();
OBJECT.gain.gain.value = .01    
OBJECT.source.connect(OBJECT.gain)
OBJECT.gain.connect(OBJECT.analyser)
OBJECT.analyser.connect(OBJECT.musicContext.destination)

OBJECT.play = function(){OBJECT.source.play();}
OBJECT.stop = function(){OBJECT.source.stop();}

問題は最後の 2 行にあります。Webkitオーディオコンテキストを介してオーディオを再生できないようです...

私が行った場合

OBJECT.play = function(){OBJECT.audio.play();}

サウンドの再生が開始されますが、オーディオ ノードを経由することはありません (これは理にかなっています)。

私も試してみました

OBJECT.play = function(){OBJECT.source.noteOn(0);}
OBJECT.stop = function(){OBJECT.source.noteOff(0);}

無駄に...

ヘルプや提案は大歓迎です。お時間をいただきありがとうございます。

アイザック

編集: console.logging OBJECT.source が、入力がゼロで出力が 1 であると主張している場合。これはソース ノードとして正しいですか?

4

2 に答える 2

1

Safari は現在、Analyzer Node に正しいデータを送信しないため、 Chrome でページを試す必要があります。Web Audio API でオブジェクトを使用している場合は、 をAudio()使用する代わりにオブジェクトで再生を制御できるはずです.noteOn()/.noteOff()

テスト ケースは次のとおりです: http://screamingrobots.com/misc/safariaudiobug/

于 2012-12-20T21:41:21.773 に答える
0

ようやく解決しましたが、何が問題だったのか正確にはわかりません...

むしろ使用する

audio = new Audio();
audio.src = self.file;

これを接続して、代わりに使用しました

audio = document.querySelector('audio');

以前にページに挿入した要素を選択します。これが単に読み込み時間が長くなったために機能するのか、それとも API に固有の何かがあるのか​​ はわかりません

于 2012-12-21T16:36:32.987 に答える