【发布时间】:2013-07-01 00:45:59
【问题描述】:
我试图将音频缓冲区的波形数据可视化为 html5 画布。
我使用buffer.getChannelData(0) 来获取每个样本的值。
然后我使用 for 循环将每个样本值绘制到缓冲区。
它现在可以工作了,但问题是它使用每个像素作为样本,这意味着它需要 44100 像素大小的画布来绘制一秒钟的音频。
这是我用来绘制的代码:
for (var i = 0; i < data.length; i++) {
ctx.fillStyle = 'black';
ctx.fillRect(i, height / 2, 0.5, (data[i] * height));
}
你可以在这里看到整个代码 http://jsfiddle.net/ehsanziya/KKNFL/1/
如何根据每次加载缓冲区时加载的缓冲区大小对其进行缩放以使其适合canvas.width?
谢谢
【问题讨论】:
-
来自 mdn 的以下示例代码似乎可以满足您的需求:developer.mozilla.org/en-US/docs/Visualizing_Audio_Spectrum
-
@markE 这是关于频谱分析和可视化的。我的问题是关于波形数据可视化。我找到了一个代码github.com/cwilso/Audio-Buffer-Draw,但不明白他是如何进行缩放的。
-
我不是发烧友,很抱歉,你的区别就在我的脑海中浮现 :( 但是..从他们的代码看来,他们将大量传入数据分类到垃圾箱中并只显示聚合的bin 信息,而不是每个数据点。这就是他们处理扩展问题的方式。
标签: javascript canvas scaling web-audio-api