MediaStreamAudioSourceNode - Web API 接口参考 编辑
MediaStreamAudioSourceNode
接口代表一个音频接口,是WebRTC MediaStream
(比如一个摄像头或者麦克风)的一部分。是个表现为音频源的AudioNode
。
MediaElementSourceNode没有输入,并且只有一个输出。创建之后使用
AudioContext.createMediaStreamSource
方法。输出通道的数量和AudioMediaStreamTrack
的通道数量相同。如果没有有效的媒体流,输出通道就变成一个静音的通道。
Number of inputs | 0 |
---|---|
Number of outputs | 1 |
Channel count | 由AudioMediaStreamTrack 定义,传递给 AudioContext.createMediaStreamSource ,并由此创建。 |
构造器
MediaStreamAudioSourceNode.MediaStreamAudioSourceNode()
- 创建一个新的
MediaStreamAudioSourceNode
实例。
属性
从AudioNode
上继承。
方法
从AudioNode
上继承。
示例
本例中,我们从 navigator.getUserMedia
获取媒体 (audio + video) 流,,把它传入 <video>
中播放,并把视频调成静音,然后把获取到的audio传入 MediaStreamAudioSourceNode
。接下来我们把获取到的audio传入BiquadFilterNode
(可以把声音转化为低音),输出到 AudioDestinationNode
.
<video>
元素下面滑动杆控制低音过滤器过滤的程度,滑动杆的值越大,低音更明显
var pre = document.querySelector('pre');
var video = document.querySelector('video');
var myScript = document.querySelector('script');
var range = document.querySelector('input');
// getUserMedia获取流
// 把流放入MediaStreamAudioSourceNode
// 输出到video元素
if (navigator.mediaDevices) {
console.log('getUserMedia supported.');
navigator.mediaDevices.getUserMedia ({audio: true, video: true})
.then(function(stream) {
video.srcObject = stream;
video.onloadedmetadata = function(e) {
video.play();
video.muted = true;
};
// 创建MediaStreamAudioSourceNode
// Feed the HTMLMediaElement into it
var audioCtx = new AudioContext();
var source = audioCtx.createMediaStreamSource(stream);
// 创建二阶滤波器
var biquadFilter = audioCtx.createBiquadFilter();
biquadFilter.type = "lowshelf";
biquadFilter.frequency.value = 1000;
biquadFilter.gain.value = range.value;
// 把AudioBufferSourceNode连接到gainNode
// gainNode连接到目的地, 所以我们可以播放
// 音乐并用鼠标调节音量
source.connect(biquadFilter);
biquadFilter.connect(audioCtx.destination);
// Get new mouse pointer coordinates when mouse is moved
// then set new gain value
range.oninput = function() {
biquadFilter.gain.value = range.value;
}
})
.catch(function(err) {
console.log('The following gUM error occured: ' + err);
});
} else {
console.log('getUserMedia not supported on your browser!');
}
// dump script to pre element
pre.innerHTML = myScript.innerHTML;
注意: 调用createMediaStreamSource()
, 来自于媒体流的音频回放将被重新传到AudioContext的处理器中。所以播放/暂停流仍然是可以通过media元素的API和自带的控制器控制。
规范
Specification | Status | Comment |
---|---|---|
Web Audio API MediaStreamAudioSourceNode | Working Draft |
兼容性
We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 14 webkit | (Yes) | 25 (25) | 未实现 | 15 webkit 22 (unprefixed) | 6 webkit |
Constructor | (Yes) | ? | 未实现 | 未实现 | ? | 未实现 |
Feature | Android | Chrome | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | 未实现 | 28 webkit | (Yes) | 25.0 (25) | 未实现 | 未实现 | 6 webkit |
Constructor | 未实现 | (Yes) | ? | 未实现 | 未实现 | ? | 未实现 |
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论