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 音频 API
# dom-audiocontext-createmediastreamtracksource

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅