gpt4 book ai didi

asp.net 从 mp3 创建波形图像

转载 作者:行者123 更新时间:2023-12-02 16:44:02 24 4
gpt4 key购买 nike

我正在寻找一种方法来创建上传到服务器的 mp3 文件的图形波形。经过一番研究,我相信 mp3 需要首先转换为原始格式...但我不知道如何为该声音文件创建 .gif 波形格式。

90% 的声音文件长度超过 60 分钟。

我知道这无法在上传后立即完成,需要将其放入队列中并进行处理。

我查看了几个库,例如lame,但似乎没有一个能够实现我正在寻找的东西。

任何指向正确方向的指针将不胜感激!

非常感谢!保罗

最佳答案

第一步是解压缩 mp3。只要您将其作为批处理作业执行,而不是使用 LAME 作为库,只需使用现有的命令行程序将 mp3 转换为临时 WAV 文件,就会容易得多。然后找到一个库来读取 WAV 文件 - 这是一种相对简单的格式,您应该在网上找到很多示例代码,或者您可以在一个下午编写自己的代码。

假设您的歌曲长 60 分钟:60 分钟 * 60 秒/分钟 * 44100 个样本/秒 = 158,760,000 个样本。 (如果是立体声歌曲,则为两倍。)如果您的图像宽度为 1000 像素,则您只想为每 158,760 个样本显示一个样本。

(顺便说一句,在该分辨率下您看不到太多细节。也许更好的解决方案是仅显示前 5 分钟的波形,或者渲染用户可以滚动的更大图像?)

无论如何,您想要读取 158,760 个样本的每个 block 的音频样本(在本例中),并将其渲染为一条垂直线,表示该部分音频的信号强度。有两种方法可以做到这一点:

  1. 该区域的最大值
  2. 该区域的均方根 (RMS) 值

最大值将向您显示峰值,而 RMS 将向您显示整体感知响度。两者都很容易实现;尝试两者,看看哪一个看起来最好。

然后您只需将生成的图像转换为 gif 即可。因为无论如何这是一个批处理作业,如果我是你,我会写出一个 BMP 文件(一种非常简单的文件格式),然后使用像 ImageMagick 的“转换”这样的命令行程序将其转换为 GIF。

最后,最后一点:如果您真的很狡猾,您可以读取 MP3 帧并直接从比特流中提取增益,而无需解码整个内容。这就是我所做的here ,欢迎您使用它 - 但它不适合胆小的人。它比解码完整 MP3 大约快 100 倍,但您得到的波形将是一个粗略的近似值。

关于asp.net 从 mp3 创建波形图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1931952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com