AudioContext:createMediaStreamTrackSource() 方法
createMediaStreamTrackSource() 方法是 AudioContext 介面的一部分,它會建立一個並返回一個 MediaStreamTrackAudioSourceNode,該節點代表一個音訊源,其資料來自指定的 MediaStreamTrack。
這與 createMediaStreamSource() 不同,後者會建立一個 MediaStreamAudioSourceNode,其音訊來自指定 MediaStream 中的音訊軌道,該軌道具有按字典順序(字母順序)排在第一位的 id。
語法
js
createMediaStreamTrackSource(track)
引數
track-
用於作為新節點所有音訊資料來源的
MediaStreamTrack。
返回值
一個 MediaStreamTrackAudioSourceNode 物件,它充當指定音訊軌道中找到的音訊資料的源。
示例
在此示例中,getUserMedia() 用於請求訪問使用者的麥克風。一旦獲得該訪問許可權,就會建立一個音訊上下文,並使用 createMediaStreamTrackSource() 建立一個 MediaStreamTrackAudioSourceNode,其音訊來自 getUserMedia() 返回的流中的第一個音訊軌道。
然後使用 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) => {
// Handle getUserMedia() error
});
規範
| 規範 |
|---|
| Web Audio API # dom-audiocontext-createmediastreamtracksource |
瀏覽器相容性
載入中…
另見
- Web Audio API
- 使用 Web Audio API
MediaStreamTrackAudioSourceNode