在Windows 2008 Server中如何从MP3/WAV文件生成可视化(波形)?

19

有没有针对Windows的命令行程序,可以从MP3/WAV创建PNG/JPEG图片?

编辑: 以下是示例图像的参考链接。 输入图像描述


示例链接已失效。 - Colin Marshall
5个回答

38

Sox是音频处理的“瑞士军刀”,可以从音频文件生成准确的PNG频谱图。它可以播放几乎任何格式的音频文件,并提供了Windows二进制版本。在最基本的级别上,你会像这样使用它:

sox my.wav -n spectrogram

如果您想要一个没有坐标轴、标题、图例和浅色背景的频谱图,高度为100像素:

sox "Me, London.mp3" -n spectrogram -Y 130 -l -r -o "Me, London.png"

如果您只想分析单个通道,Sox接受许多选项。如果您需要更酷炫的视觉效果,可以对生成的PNG进行后处理。

以下是有关所有可用参数的简要概述,手册中有更多详细信息:

-x num  X-axis size in pixels; default derived or 800
-X num  X-axis pixels/second; default derived or 100
-y num  Y-axis size in pixels (per channel); slow if not 1 + 2^n
-Y num  Y-height total (i.e. not per channel); default 550
-z num  Z-axis range in dB; default 120
-Z num  Z-axis maximum in dBFS; default 0
-q num  Z-axis quantisation (0 - 249); default 249
-w name Window: Hann (default), Hamming, Bartlett, Rectangular, Kaiser
-W num  Window adjust parameter (-10 - 10); applies only to Kaiser
-s  Slack overlap of windows
-a  Suppress axis lines
-r  Raw spectrogram; no axes or legends
-l  Light background
-m  Monochrome
-h  High colour
-p num  Permute colours (1 - 6); default 1
-A  Alternative, inferior, fixed colour-set (for compatibility only)
-t text Title text
-c text Comment text
-o text Output file name; default `spectrogram.png'
-d time Audio duration to fit to X-axis; e.g. 1:00, 48
-S time Start the spectrogram at the given time through the input

12
请注意,严格来说,这不是一个波形。但它是一种可视化图像。 - Wander Nauta
3
这不是一个波形,而是一张频谱图。它并不能回答所提出的问题。 - Maciej Jankowski
1
@MaciejJankowski 就像我在第一条评论中所说的那样,问题要求提供PNG/JPEG格式的可视化图像。这是一个PNG格式的可视化图像,因此是一个有效的答案。 - Wander Nauta
1
使用 sox --help-effect spectrogram 命令获取更多选项。 - Sanya_Zol
1
@Diskutant,您可能在谈论sox选项。答案中列出的参数是专门针对频谱图子命令的(应该在其后列出)。 - Wander Nauta
显示剩余7条评论

11

使用FFmpeg可以生成真实的波形,你可以在这里下载。

安装后,你可以使用以下命令行作为示例:

ffmpeg.exe -i "filename.mp3" -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png

或者使用以下命令行来匹配你所需的图片颜色,或其他颜色

ffmpeg.exe -i "filename.mp3" -lavfi showwavespic=s=1024x800:colors=0971CE waveform.png

FFmpeg showwavespic文档


3
我已经创建了一个小型的PHP库,可以实现这个目的: https://github.com/jasny/audio
它的工作原理如下。 它使用以下方法获取样本:
sox TRACK.mp3 -t raw 4000 -c 1 -e floating-point -L -

此处将音轨降采样为4k并全部放入一个通道中。
接下来,我取样本块(每个像素宽度)并计算最小值和最大值。用它们来绘制波形。

1

给出的链接已失效。 - Christian
我建议编辑并引用我能找到的最后一个良好的Webarchive版本。 - Sun

0

更新的批处理版本Wander Nauta,可以为文件夹中的所有wav文件生成直方图(BASH/DASH):

for i in *.wav; do ./sox $i -n spectrogram -y 130 -l -r -o ${i%%.wav}.png; done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接