答案 0 :(得分:1)
根据比例细分波形。例如,如果波形长度为1秒,并且您希望计划显示10个条形,则分成100毫秒的块。每100ms的块将是一定数量的样本,具体取决于采样率。 48kHz采样率每秒有48000个样本,因此100ms是4800个样本。
枚举每个样本块并计算最小值和最大值。
缩放并转换最小值和最大值,以获得您想要绘制的框的所需屏幕y坐标。
#2的替代方案是计算每个块的abs(max(样本)),然后使用min和max的正负值。这使它始终是对称的。
答案 1 :(得分:0)
这是Github项目检查出来的, https://github.com/andrewrk/waveform 它用c和js编写。您可以检查代码审查并以您自己的语言实现它。 希望有所帮助。
答案 2 :(得分:0)
感谢@jaket的回答。
我已经编写了代码并发布在这里。 https://gist.github.com/moeseth/130cd92dc47c56c47030
您将需要pydub,matplotlib,numpy和PIL库