2017-01-25 4 views
1

私はWebオーディオAPIを使用しており、コンテキストを作成してソースバッファにデータを設定しています。それは、デフォルトの出力デバイス上で正常に再生されますが、私は宛先を選択する方法を理解していません。古いw3仕様では、正しいdeviceIdをオーディオコンテキストコンストラクタに渡すことができましたが、メディア要素を使用せずにこれを実行する方法を理解できません。助言がありますか?Web Audio Apiを使用して出力先デバイスを選択する方法

source = context.createBufferSource() 
source.loop = true; 
source.buffer = globalAudioBuffer; 
source.connect(context.destination); 
context.resume(); 
source.start(0); 

答えて

1

残念なことに、webaudioグラフの先のオーディオデバイスを設定することは、まだ実装されていない、このためのAPIは、まだ確定されていません。

あなたは今のために何ができるか、HTML要素にwebaudioグラフを接続している、とset the sinkid of the elementは(現在はChromeで動作します)

ここでは簡単な例です:今

var ac = new AudioContext(); 
var audio = new Audio(); 
var o = ac.createOscillator(); 
o.start(); 
var dest = ac.createMediaStreamDestination(); 
o.connect(dest); 
audio.src = URL.createObjectURL(dest.stream); 
audio.play(); 

あなたの発振器オーディオ要素を介して再生され、 に接続された出力デバイスのdeviceIdを使用してaudio.setSinkId()を呼び出すことができます。

+0

ありがとうございます。私はそのプロジェクトに戻ったときにあなたの回避策を試してみるか、オーディオ出力デバイスのapiが成熟するのを待つだけかもしれません。 – Rogue45

+0

幸運。この機能のステータスを知りたい場合は、[未解決の問題](https://github.com/WebAudio/web-audio-api/issues/445#issuecomment-289768963)に従ってください。 – Asher

+0

もう一度試してみました。 mediaDevices.getUserMediaは定義されたmediaStreamDestinationを設定するためのdeviceIDとラベルを提供します。それから、source.connect(dest)だけです。私は今なぜ専用オーディオ出力APIが必要なのか理解できません。 – Rogue45

関連する問題