- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试可视化来自网页元素的音频。该元素的来源是通过 sip.js 连接到 Asterisk 调用的 WebRTC 流。音频按预期工作。
但是,当我尝试使用网络音频 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 .此错误将在 Firefox 中将 webaudio 输入添加到 RTCPeerConnections;我们已经对输出 MediaStreams 进行了一段时间的 WebAudio 处理。那里的测试代码测试双方;请注意,它在很大程度上取决于测试框架,因此只需将其用作连接到 webaudio 的指南。
关于webrtc - createMediaElementSource 播放但 getByteFrequencyData 返回全 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821022/
我有点困惑 getByteFrequencyData() 返回的 Uint8Array 的所有值究竟意味着/代表什么? 我怎样才能理解它们的值(value)?为什么前面定义的值大部分都是 0,后面的值
我在 Web Audio API 的分析器节点上使用 getByteFrequencyData 方法创建了一个 getSpectrum 方法。返回的音频数据数组是相对于音频源(el 或 Audio()
我正在尝试制作一个音频栏可视化工具。 阅读 Web Audio API,我有以下代码: HTML: JavaScript: var audioCtx, myAudio, canv
有关现场演示,请参阅:http://codepen.io/rrorg/pen/WxPjrz?editors=0010 在 Safari 中播放 HTTP 音频直播流时,分析器的 getByteFreq
无论我在哪里查看,这两种方法的文档都非常通用。我想知道我正在查看从每种方法获得的返回数组的具体内容。 对于 getByteTimeDomainData,每次传递涵盖什么时间段?我相信大多数示波器每次通
我正在尝试可视化来自网页元素的音频。该元素的来源是通过 sip.js 连接到 Asterisk 调用的 WebRTC 流。音频按预期工作。 但是,当我尝试使用网络音频 api 获取频率数据时,它返回一
我知道 getByteFrequencyData 返回每个频段的音量(以 dB 为单位)。如何确定 VU 表中显示的信号的总音量(以 dB 为单位)? 大多数时候,我看到的代码只是将每个频段的音量相加
对于Web Audio API中的AnalyserNode,getFloatFrequencyData()返回的数据的频率范围是多少?和 getByteFrequencyData() ?我可以假设 A
我正在尝试使用 analyser.getByteFrequencyData(array) 从分析器节点访问 FFT 数据,但它似乎返回一个空白数组: var array = new Uint8Arra
这似乎是一个常见问题 - Javascript Web Audio API AnalyserNode Not Working - 但我不确定我是否在我的实现中找到了边缘案例。 我使用 createMe
我这里有设置示例 - http://jsbin.com/hotovu/2/ 在桌面 chrome 上一切都很好。 Android Chrome 39 将所有数组返回到 0,0,0, ...(在用于 c
我想在使用网络音频 API 进行一些 FFT 时使用百分比。 为此,我需要知道 analyser.getByteFrequencyData 返回值的范围。 我找不到任何相关信息,也许有人知道? 谢谢
我是一名优秀的程序员,十分优秀!