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

View in English Always switch to English

AudioContext: createMediaStreamTrackSource() メソッド

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

createMediaStreamTrackSource() は AudioContext インターフェイスのメソッドで、指定された MediaStreamTrack からデータを受け取る音源を表す MediaStreamTrackAudioSourceNode を作成して返します。

このメソッドが createMediaStreamSource() と異なる点は、指定された MediaStream の中の id が辞書順(アルファベット順)で最初の音声トラックからデータを受け取る MediaStreamAudioSourceNode を作成する点です。

構文

js
createMediaStreamTrackSource(track)

引数

track

新しいノードのすべての音声データの取得元として使用する MediaStreamTrack です。

返値

指定の音声トラックから得られる音声データの取得元として働く MediaStreamTrackAudioSourceNode オブジェクトを返します。

例

この例では、ユーザーのマイクへのアクセスを要求するために getUserMedia() を使います。アクセスができるようになると、音声コンテキストを作成し、getUserMedia() が返したストリームの最初の音声トラックから音声を取得する MediaStreamTrackAudioSourceNode を createMediaStreamTrackSource() により作成します。

そして、createBiquadFilter() により BiquadFilterNode を作成し、音源から流れてくる音声にローシェルフフィルターを適用するように意図通り設定します。すると、マイクからの出力が新しいバイクワッドフィルターに流れ、フィルターの出力が音声コンテキストの出力先 (destination) に順に流れるようになります。

js
navigator.mediaDevices
  .getUserMedia({ audio: true, video: false })
  .then((stream) => {
    audio.srcObject = stream;
    audio.onloadedmetadata = (e) => {
      audio.play();
      audio.muted = true;
    };

    const audioCtx = new AudioContext();
    const audioTracks = stream.getAudioTracks();
    const source = audioCtx.createMediaStreamTrackSource(audioTracks[0]);

    const biquadFilter = audioCtx.createBiquadFilter();
    biquadFilter.type = "lowshelf";
    biquadFilter.frequency.value = 3000;
    biquadFilter.gain.value = 20;

    source.connect(biquadFilter);
    biquadFilter.connect(audioCtx.destination);
  })
  .catch((err) => {
    // getUserMedia() のエラーを処理する
  });

仕様書

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

ブラウザーの互換性

関連情報