AudioContext.createMediaStreamTrackSource()
AudioContext
インターフェイスの createMediaStreamTrackSource()
メソッドは、指定の MediaStreamTrack
からデータを受け取る音源を表す MediaStreamTrackAudioSourceNode
(en-US) を作成して返します。
このメソッドは、指定の MediaStream
の中の id
が辞書順 (アルファベット順) で最初である音声トラックからデータを受け取る MediaStreamAudioSourceNode
を作成する createMediaStreamSource()
とは異なります。
構文
createMediaStreamTrackSource(track)
引数
track
-
新しいノードのすべての音声データの取得元として使用する
MediaStreamTrack
です。
返値
指定の音声トラックから得られる音声データの取得元として働く MediaStreamTrackAudioSourceNode
(en-US) オブジェクトを返します。
例
この例では、ユーザーのマイクへのアクセスを要求するために getUserMedia()
を使います。アクセスができるようになると、音声コンテキストを作成し、getUserMedia()
が返したストリームの最初の音声トラックから音声を取得する MediaStreamTrackAudioSourceNode
(en-US) を createMediaStreamTrackSource()
により作成します。
そして、createBiquadFilter()
により BiquadFilterNode
(en-US) を作成し、音源から流れてくる音声にローシェルフフィルターを適用するように意図通り設定します。すると、マイクからの出力が新しい双 2 次フィルターに流れ、フィルターの出力が音声コンテキストの出力先
に順に流れるようになります。
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() のエラーを処理する
});
仕様書
Specification |
---|
Web Audio API # dom-audiocontext-createmediastreamtracksource |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- Web Audio API
- Web Audio API の使用
MediaStreamTrackAudioSourceNode
(en-US)