MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

AudioContext.createMediaStreamDestination()

AudioContextインターフェースのcreateMediaStreamDestination()メソッドは、WebRTC MediaStreamで表されたローカルファイルまたは他のコンピュータへの送信に関連付けられたMediaStreamAudioDestinationNodeオブジェクトを生成します。

MediaStreamは、ノードが生成されたときと、MediaStreamAudioDestinationNodestreamプロパティを通じでアクセスできるようになったときに生成されます。このストリームはnavigator.getUserMediaで得られたMediaStreamと同じような使い方ができます—例えば、RTCPeerConnectionインターフェースのaddStream()メソッドでリモートの端末に送ることができます。

詳細はMediaStreamAudioDestinationNodeのページを参照してください。

構文

var audioCtx = new AudioContext();
var desintation = audioCtx.createMediaStreamDestination();

戻り値

MediaStreamAudioDestinationNode

次の簡単な例では、MediaStreamAudioDestinationNodeOscillatorNodeMediaRecorder(現時点ではこのサンプルはFirefoxでしか動作しません)を生成しています。MediaRecorderMediaStreamDestinationNodeからの情報を記録するように設定されています。

ボタンをクリックするとオシレーター(振動子)が開始し、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>

注: Githubでこの例の閲覧ソースコードを読むことができます。

仕様

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

参考

ドキュメントのタグと貢献者

 このページの貢献者: maruhiro
 最終更新者: maruhiro,