
但是,当我尝试使用web audio API获取频率数据时,它会返回一个全0的数组,即使音频工作正常.这似乎是createMediaElementSource的一个问题.如果我调用getUserMedia并使用createmediastreamsource将我的麦克风连接到输入,我确实得到了返回的频率数据.
这是在Chrome 40.0和firefox 31.4中尝试的.在我的搜索中,我发现Android Chrome存在类似的错误,但我的桌面Chrome和firefox版本似乎应该正常运行.到目前为止,我有一种感觉,错误可能是由于音频播放器从sip.Js中的另一个AudioContext获取音频,或者与CORS有关.我尝试过的所有演示都能正常工作,但只能使用createmediastreamsource来获取麦克风音频,或者使用createMediaElementSource来播放文件(而不是流式传输到元素).
我的代码:
var context = new (window.AudioContext || window.webkitaudiocontext)(); var analyser = context.createAnalyser(); analyser.fftSize = 64; analyser.minDecibels = -90; analyser.maxDecibels = -10; analyser.smoothingTimeConstant = 0.85; var frequencyData = new Uint8Array(analyser.frequencyBinCount); var visualisation = $("#visualisation"); var barSpacingPercent = 100 / analyser.frequencyBinCount; for (var i = 0; i < analyser.frequencyBinCount; i++) { $("<div/>").CSS("left",i * barSpacingPercent + "%").appendTo(visualisation); } var bars = $("#visualisation > div"); function update() { window.requestAnimationFrame(update); analyser.getByteFrequencyData(frequencyData); bars.each(function (index,bar) { bar.style.height = frequencyData[index] + 'px'; console.deBUG(frequencyData[index]); }); };$("audio").bind('canplay',function() { source = context.createMediaElementSource(this); source.connect(analyser); update();}); 任何帮助是极大的赞赏.
解决方法 Chrome不支持RTCPeerConnection输出流(远程流)的WebAudio处理;见 this question.他们的错误是 here.编辑:他们现在支持Chrome 50
请参阅firefox即将登陆的测试代码,作为此错误的一部分:
Bug 1081819.这个BUG会将webaudio输入添加到firefox中的RTCPeerConnections;我们已经对输出MediaStreams进行了一段时间的WebAudio处理.那里的测试代码测试双方;请注意,它在很大程度上取决于测试框架,因此只需将其用作挂钩到webaudio的指南.
以上是内存溢出为你收集整理的webrtc – createMediaElementSource播放但getByteFrequencyData返回全0全部内容,希望文章能够帮你解决webrtc – createMediaElementSource播放但getByteFrequencyData返回全0所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)