--- title: AudioContext.createMediaStreamSource() slug: Web/API/AudioContext/createMediaStreamSource translation_of: Web/API/AudioContext/createMediaStreamSource ---
{{ APIRef("Web Audio API") }}
インターフェースのcreateMediaStreamSource()
メソッドは、指定のメディアストリームから(言い換えると{{ domxref("navigator.getUserMedia") }}インスタンスから){{ domxref("MediaStreamAudioSourceNode") }}オブジェクトを生成します。ここからの音声は再生や編集ができます。
メディアストリームオーディオソースノードの詳細は{{ domxref("MediaStreamAudioSourceNode") }}のページを参照してください。
var audioCtx = new AudioContext(); var source = audioCtx.createMediaStreamSource(stream);
{{domxref("MediaStreamAudioSourceNode")}}
この例では、メディア(音声+映像)ストリームを{{ domxref("navigator.getUserMedia") }}から獲得し、それを{{ htmlelement("video") }}要素に渡し、映像は再生しますが音声は再生しないようにします。音声は{{ domxref("MediaStreamAudioSourceNode") }}に渡します。次に、音声をローパスフィルタ{{ domxref("BiquadFilterNode") }}(低音を強めるように働きます)に渡し、そして{{domxref("AudioDestinationNode") }}に渡します。
{{ htmlelement("video") }}要素の下のスライダーはローパスフィルタの増幅量を操作します—スライダーで値を大きくすると、より低音が強くなります!
// プレフィックスが必要な場合を考慮して、getUserMediaはブラウザのバージョンごとに分ける navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); // 他の変数を定義する var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); var myAudio = document.querySelector('audio'); var pre = document.querySelector('pre'); var video = document.querySelector('video'); var myScript = document.querySelector('script'); var range = document.querySelector('input'); // マウスポインタのY座標と、画面の高さを格納する変数を定義する var CurY; var HEIGHT = window.innerHeight; // getUserMediaのブロック - ストリームを得る // MediaStreamAudioSourceNodeに渡す // 映像はvideo要素に出力する if (navigator.getUserMedia) { console.log('getUserMedia supported.'); navigator.getUserMedia ( // 制約: このアプリで音声と映像を有効にする { audio: true, video: true }, // 成功時のコールバック function(stream) { video.src = (window.URL && window.URL.createObjectURL(stream)) || stream; video.onloadedmetadata = function(e) { video.play(); video.muted = 'true'; }; // MediaStreamAudioSourceNodeを生成し、それにHTMLMediaElementを渡す var source = audioCtx.createMediaStreamSource(stream); // 二次フィルターを生成する var biquadFilter = audioCtx.createBiquadFilter(); biquadFilter.type = "lowshelf"; biquadFilter.frequency.value = 1000; biquadFilter.gain.value = range.value; // AudioBufferSourceNodeをgainNodeに、そしてgainNodeをdestinationに接続する // これでマウスを動かすことで音楽のボリュームを調整することができる source.connect(biquadFilter); biquadFilter.connect(audioCtx.destination); // マウスが動いたとき新しい座標を得る // そして増幅量を更新する range.oninput = function() { biquadFilter.gain.value = range.value; } }, // エラー時のフィードバック function(err) { console.log('The following gUM error occured: ' + err); } ); } else { console.log('getUserMedia not supported on your browser!'); } // pre要素にスクリプトを書き出す pre.innerHTML = myScript.innerHTML;
注: createMediaStreamSource()
の呼び出しによるメディアストリームの音声は、再びAudioContext
の処理グラフに再び入ります。よって、ストリームの再生/停止は、まだメディアAPIとプレイヤーの操作で行えます。
Specification | Status | Comment |
---|---|---|
{{SpecName('Web Audio API', '#widl-AudioContext-createMediaStreamSource-MediaStreamAudioSourceNode-MediaStream-mediaStream', 'createMediaStreamSource()')}} | {{Spec2('Web Audio API')}} |
{{Compat("api.AudioContext.createMediaStreamSource")}}