Pau*_*ett 2 asp.net mp3 waveform
我正在寻找一种方法来创建上传到服务器的mp3文件的图形波形.从一点研究我相信mp3将需要首先转换为原始格式...但我不知道如何为此声音文件创建波形的.gif格式.
90%的声音文件长度超过60分钟.
我知道这不能在上传后立即完成,需要将其放入队列并进行处理.
我看过几个像lame这样的图书馆,但似乎没有人能够实现我想要的.
任何指向正确方向的指针都将非常感激!
非常感谢你!保罗
dma*_*oni 11
第一步是解压缩mp3.只要您将其作为批处理作业,而不是使用LAME作为库,只需使用现有的命令行程序将mp3转换为临时WAV文件,这将更容易.然后找一个库来读取WAV文件 - 这是一个相对简单的格式,你应该在网上找到很多示例代码,或者你可以在下午编写自己的代码.
假设您的歌曲长达60分钟:60分钟*60秒/分钟*44100个样本/秒= 158,760,000个样本.(如果它是立体声歌曲,则两次.)如果您的图像宽度为1000像素,则您只需要为每158,760个样本显示一个样本.
(顺便说一句,你不会在那个分辨率上看到太多细节.也许更好的解决方案是显示前5分钟的波形,或渲染用户可以滚动的更大的图像?)
无论如何,您想要读取158,760个样本的每个块的音频样本(在此示例中),并将其渲染为垂直线,表示该部分音频上的信号强度.有两种方法可以做到这一点:
最大值将显示峰值,而RMS将显示整体感知响度.两者都易于实施; 尝试两者,看看哪一个看起来最好.
然后你只需要将生成的图像转换为gif.因为这是一个批处理作业,如果我是你,我会写出一个BMP文件(一种非常简单的文件格式),然后使用命令行程序,如ImageMagick的"转换"将其转换为GIF.
最后,最后一点说明:如果你真的很棘手,你可以读取MP3帧并直接从比特流中提取增益,而无需解码整个事物.这就是我在这里所做的,欢迎你使用它 - 但它不适合胆小的人.它比解码整个MP3大约快100倍,但你得到的波形将是一个粗略的近似值.
| 归档时间: |
|
| 查看次数: |
6998 次 |
| 最近记录: |