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 的浏览器中加载。
另请参阅
- Web 音频 API
- 使用 Web 音频 API
MediaStreamTrackAudioSourceNode