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

瀏覽器相容性

另見