html5调用系统声音1s响一次_HTML5 WebRTC AudioContext捕捉麦克风声音API代码示例

这篇博客介绍了如何使用HTML5的WebRTC和AudioContext API捕获麦克风声音,并通过创建BiquadFilter进行声音处理。通过设置滤波器类型为低通滤波器,并调整频率和增益,实现每秒响一次的声音效果。同时,展示了获取频率响应的方法和可视化输出。
摘要由CSDN通过智能技术生成

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

var myAudio = document.querySelector('audio');

var pre = document.querySelector('pre');

var video = document.querySelector('video');

var myScript = document.querySelector('script');

var range = document.querySelector('input');

var freqResponseOutput = document.querySelector('.freq-response-output');

// create float32 arrays for getFrequencyResponse

var myFrequencyArray = new Float32Array(5);

myFrequencyArray[0] = 1000;

myFrequencyArray[1] = 2000;

myFrequencyArray[2] = 3000;

myFrequencyArray[3] = 4000;

myFrequencyArray[4] = 5000;

var magResponseOutput = new Float32Array(5);

var phaseResponseOutput = new Float32Array(5);

// getUserMedia block - grab stream

// put it into a MediaStreamAudioSourceNode

// also output the visuals into a video element

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;

};

// Create a MediaStreamAudioSourceNode

// Feed the HTMLMediaElement into it

var audioCtx = new AudioContext();

var source = audioCtx.createMediaStreamSource(stream);

// Create a biquadfilter

var biquadFilter = audioCtx.createBiquadFilter();

biquadFilter.type = "lowshelf";

biquadFilter.frequency.value = 1000;

biquadFilter.gain.value = range.value;

// connect the AudioBufferSourceNode to the gainNode

// and the gainNode to the destination, so we can play the

// music and adjust the volume using the mouse cursor

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;

}

function calcFrequencyResponse() {

biquadFilter.getFrequencyResponse(myFrequencyArray,magResponseOutput,phaseResponseOutput);

for (i = 0; i <= myFrequencyArray.length-1;i++){

var listItem = document.createElement('li');

listItem.innerHTML = '' + myFrequencyArray[i] + 'Hz: Magnitude ' + magResponseOutput[i] + ', Phase ' + phaseResponseOutput[i] + ' radians.';

freqResponseOutput.appendChild(listItem);

}

}

calcFrequencyResponse();

})

.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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值