AudioContext
インターフェースのcreateMediaStreamDestination()
メソッドは、WebRTC MediaStream
で表されたローカルファイルまたは他のコンピュータへの送信に関連付けられたMediaStreamAudioDestinationNode
オブジェクトを生成します。
MediaStream
は、ノードが生成されたときと、MediaStreamAudioDestinationNode
のstream
プロパティを通じでアクセスできるようになったときに生成されます。このストリームはnavigator.getUserMedia
で得られたMediaStream
と同じような使い方ができます—例えば、RTCPeerConnection
インターフェースのaddStream()
メソッドでリモートの端末に送ることができます。
詳細はMediaStreamAudioDestinationNode
のページを参照してください。
構文
var audioCtx = new AudioContext(); var desintation = audioCtx.createMediaStreamDestination();
戻り値
MediaStreamAudioDestinationNode
例
次の簡単な例では、MediaStreamAudioDestinationNode
とOscillatorNode
とMediaRecorder
(現時点ではこのサンプルはFirefoxでしか動作しません)を生成しています。MediaRecorder
はMediaStreamDestinationNode
からの情報を記録するように設定されています。
ボタンをクリックするとオシレーター(振動子)が開始し、MediaRecorder
も開始します。再びボタンを押して止めると、オシレーターとMediaRecorder
の両方が停止し、MediaRecorder
はデータを要求します。これはdataavailable
イベントが発火したときに行われ、イベントデータはchunks
配列にプッシュされます。その後、stop
イベントが発火すると、新しいblob
がopusタイプで作られます—そこにはchunks
配列のデータが書き込まれていて、そのblobのURLを指す新しいウィンドウ(タブ)が開きます。
そこでopusファイルの再生と保存ができます。
<!DOCTYPE html> <html> <head> <title>createMediaStreamDestination() demo</title> </head> <body> <h1>createMediaStreamDestination() demo</h1> <p>Encoding a pure sine wave to an Opus file </p> <button>Make sine wave</button> <script> var b = document.querySelector("button"); var clicked = false; var chunks = []; var ac = new AudioContext(); var osc = ac.createOscillator(); var dest = ac.createMediaStreamDestination(); var mediaRecorder = new MediaRecorder(dest.stream); osc.connect(dest); b.addEventListener("click", function(e) { if (!clicked) { mediaRecorder.start(); osc.start(0); e.target.innerHTML = "Stop recording"; clicked = true; } else { mediaRecorder.stop(); mediaRecorder.requestData(); osc.stop(0); e.target.disabled = true; } }); mediaRecorder.ondataavailable = function(evt) { // それぞれのchunk(blobs)を配列に入れる chunks.push(evt.data); }; mediaRecorder.onstop = function(evt) { // blobを作成し開く var blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' }); window.location.href = URL.createObjectURL(blob); }; </script> </body> </html>
仕様
Specification | Status | Comment |
---|---|---|
Web Audio API The definition of 'createMediaStreamDestination()' in that specification. |
草案 |
ブラウザ互換性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 10.0webkit | 25.0 (25.0) | 未サポート | 15.0webkit 22 (unprefixed) |
6.0webkit |
Feature | Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | ? | 26.0 | 1.2 | ? | ? | ? | 33.0 |