2013-04-08 107 views
2

generatring波形我目前正在开发一个Android应用程序和Android libraray需要能够呈现音频文件的波形。我已经阅读过关于Visualizer类的内容,但我认为这个类被设计用于实时计算。我想要做的是通过音频文件并生成例如包含整个音频文件的波形的.PNG。从音频文件

基本上类似的SoundCloud的作用: http://www.djban.com.br/wp-content/uploads/soundcloud-waveform.png

是否有可以做到这一点任何库?或者你能告诉我如何获得音频文件的幅度数组吗?

+0

哎@heisenbug,如果你设法得到它的工作,做表现出一定的指针。 – amalBit 2014-07-21 12:31:01

回答

1

我不知道任何库,但它应该很容易得到它的工作。

首先,为了得到波形的幅度,则需要在PCM格式的音频。 假设您需要任意音频文件(特别是mp3)的波形,您需要找到一种在各种格式之间进行转换的方法。快速谷歌搜索给this result。 注意:如果您只需要为来自麦克风的音频执行此操作,则可以避免转换,因为它以PCM格式传送音频数据。

获取样本后,您将需要以某种方式绘制它们的幅度。你有几个选择,但我会给Canvas一试。您可以在那里画线(或一般形状),然后export it to a file或在屏幕上绘制。

另一种选择画是OpenGL的。如果你以前没有使用它,这会更复杂,但它可能会更快。

+0

感谢您的快速回答,但您能否解释为什么我需要将文件转换为PCM格式?有什么好处?我不能仅仅获取android可以打开的任何其他格式的样本吗? 绘图过程不是问题,我熟悉Android。这是我如何读取音频文件的样本以及如何获得这些样本的幅度。感谢您花时间回复! – Heisenbug 2013-04-08 13:57:19

+0

mp3文件中没有幅度信息(至少直接)。这就是为什么你需要将其转换为PCM或类似的格式(如未压缩的WAV)。 Android的MediaPlayer可以播放MP3文件,但它不会提供幅度信息。我没有尝试过,但在关于mp3plugin的帖子中似乎很容易。您不需要保存转换后的文件,只需使用缓冲区播放一下即可。 – Esparver 2013-04-08 14:14:34