1. 開発者向けのウェブ技術
  2. Web API
  3. AudioContext
  4. createMediaStreamDestination()

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

AudioContext: createMediaStreamDestination() メソッド

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2021年4月以降、すべてのブラウザーで利用可能です。

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

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

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

構文

js
createMediaStreamDestination()

引数

なし。

返値

MediaStreamAudioDestinationNode です。

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

ボタンをクリックするとオシレーター(振動子)が開始し、MediaRecorder も開始します。再びボタンを押して止めると、オシレーターと MediaRecorder の両方が停止します。MediaRecorder が停止すると dataavailable イベントが発火され、イベントデータが chunks配列にプッシュされます。その後、stop イベントが発火すると、新しい blob が opus タイプで作られます—そこには chunks配列のデータが書き込まれていて、その blob の URL を指す新しいウィンドウ(タブ)が開きます。

そこで opus ファイルの再生と保存ができます。

html
<!doctype html>
<html lang="en-US">
 <head>
 <meta charset="UTF-8" />
 <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>
 <audio controls></audio>
 <script>
 const b = document.querySelector("button");
 let clicked = false;
 const chunks = [];
 const ac = new AudioContext();
 const osc = ac.createOscillator();
 const dest = ac.createMediaStreamDestination();
 const mediaRecorder = new MediaRecorder(dest.stream);
 osc.connect(dest);
 b.addEventListener("click", (e) => {
 if (!clicked) {
 mediaRecorder.start();
 osc.start(0);
 e.target.textContent = "Stop recording";
 clicked = true;
 } else {
 mediaRecorder.stop();
 osc.stop(0);
 e.target.disabled = true;
 }
 });
 mediaRecorder.ondataavailable = (evt) => {
 // それぞれのチャンク (blob) を配列に入れる
 chunks.push(evt.data);
 };
 mediaRecorder.onstop = (evt) => {
 // blob を作成し開く
 const blob = new Blob(chunks, { type: "audio/ogg; codecs=opus" });
 document.querySelector("audio").src = URL.createObjectURL(blob);
 };
 </script>
 </body>
</html>

メモ: Github で実際に動作する例を閲覧したり、ソースコードを読むことができます。

仕様書

仕様書
Web Audio API
# dom-audiocontext-createmediastreamdestination

ブラウザーの互換性

関連情報

MDN の改良に協力

協力方法を知る

このページは MDN の貢献者によって に最終更新されました。

AltStyle によって変換されたページ (->オリジナル) /