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