Javascript 来自麦克风的html5音频上下文反馈

Javascript 来自麦克风的html5音频上下文反馈,javascript,html,html5-audio,audiocontext,Javascript,Html,Html5 Audio,Audiocontext,所以我有一个有趣的小项目我正在工作。。。正在尝试使用html5和websockets创建视频会议应用程序。我可以得到视频和音频,但我似乎无法摆脱反馈。你知道我哪里做错了,或者对手头的任务有什么建议吗 “严格使用”; var successCallback=函数(流){ var video=document.querySelector('video'); video.src=window.URL.createObjectURL(流); video.onloadedmetadata=函数(e){

所以我有一个有趣的小项目我正在工作。。。正在尝试使用html5和websockets创建视频会议应用程序。我可以得到视频和音频,但我似乎无法摆脱反馈。你知道我哪里做错了,或者对手头的任务有什么建议吗

“严格使用”;
var successCallback=函数(流){
var video=document.querySelector('video');
video.src=window.URL.createObjectURL(流);
video.onloadedmetadata=函数(e){
video.play();
}
var audioContext=新的audioContext();
var麦克风=audioContext.createMediaStreamSource(流);
var audioanalyzer=audioContext.createanalyzer();
var audioGain=audioContext.createGain();
var nyquist=audioContext.sampleRate/2;
//AudioAnalyzer.fftSize=1024;
音频分析仪.smoothingTimeConstant=0.9;
听力分析器.minDecibels=-60;
audioGain.gain.value=0;
//麦克风->过滤器->目的地。
麦克风连接(音频分析仪);
音频分析仪。连接(音频增益);
audioGain.connect(audioContext.destination);
var frequencyData=新的UINT8阵列(音频分析仪。frequencyBinCount)。切片(0,16);
var spectrum=document.querySelector(“#spectrum”);
var频率=[];
用于(让我输入频率数据){
频率.push(i*audioContext.sampleRate/audioanalyzer.fftSize)
spectrum.appendChild(document.createElement('DIV'));
}
控制台日志(频率)
var bar=document.queryselectoral(#spectrum>div);
var平均值=0;
函数renderFrame(){
requestAnimationFrame(renderFrame);
//更新frequencyData中的数据
音频分析仪.GetByTefFrequencyData(频率数据);
//基于frequencyData中的值渲染帧
var总和=0,
总数=1;
用于(让我输入频率数据){
条形图[i].style.height=频率数据[i]+“px”;
总和+=频率数据[i]*频率[i];
总+=频率数据[i];
条[i].style.backgroundColor=“hsl”(“+~~avg+”,60%,70%)”;
}
平均值=总和/总数;
}
renderFrame();
}
var errorCallback=函数(e){
如果(e.name=='PermissionDeniedError'){
log('reeejected!',e);
}else if(e.name=='NotFoundError'){
video.src='';
}
}
var gUM=modernizer.prefixed('getUserMedia',navigator);
口香糖({
视频:没错,
音频:正确
},successCallback,errorCallback)
视频{
变换:旋转(180度);
最大宽度:100%;
}
.全宽{
宽度:100%
}
#光谱{
显示器:flex;
宽度:100%;
高度:255px;
对齐项目:柔性端;
}
#频谱>div{
宽度:100%;
}


将视频静音,您是否也必须将
audioGain
连接到
audioContext
的目的地?
video.muted=true无效。至于连接到我的目的地,如果我想在任何地方发送声音,我不需要吗?
video.muted=true有效,可能您没有注意到,因为您正在将audioGain连接到目标。我想你不需要这个来发送它,但是你没有提供发送部分,所以我帮不了你。静音你的视频,你是否也被迫将
audioGain
连接到
audioContext
的目的地?
video.mute=true无效。至于连接到我的目的地,如果我想在任何地方发送声音,我不需要吗?
video.muted=true有效,可能您没有注意到,因为您正在将audioGain连接到目标。我不认为你需要这个来发送它,但是你没有提供发送部分,所以我帮不了你。