在Android中反转音频文件

时间:2011-01-12 16:31:24

标签: android audio wav reverse

我正处于开发此应用程序的非常细微的阶段,但在调查中我已经遇到了问题。我需要能够向后播放音频文件(你知道要显示隐藏的消息;))。我没有在Android上使用音频的经验,也不知道这是否可能。

我在这里找到了一个问题,解决了java(Click Here For Question

中的问题

但这会使用android不支持的javax.sound库。我是否需要这个库来解决这个问题,还是有另一种方法来反转音频文件?

1 个答案:

答案 0 :(得分:6)

典型的WAV文件包含一个44字节的标题,后跟实际的样本值。 “帧”的大小取决于WAV文件的属性:立体声文件和每个样本16位的文件将具有4字节帧大小(左侧样本为2个字节,右侧样本为2个字节) )。

因此,在代码中,您将通过创建与原始大小相同的字节数组来创建第二个WAV文件。您将原始的44字节标题复制到副本中,然后从最后一个开始迭代原始帧并向前移动到第一个。您将每个帧复制到复制数组中的反向位置(即最后一个原始帧在标题之后立即复制到复制数组中;在第一帧之后复制倒数第二帧等)。然后只播放反转文件。

所以你不需要javax.sound库来做到这一点 - 你只需要能够复制和操作字节。仅供参考,并非所有WAV文件都是“规范”的(规范意味着44字节标题加上样本值,没有别的)。 WAV格式实际上是RIFF格式,这意味着理论上您需要对样本值进行更复杂的提取。在实践中(特别是如果你自己创建WAV文件),你通常可以使用我在这里描述的更简单的方法。

注意:如果您的声音是MP3文件,则反转是一项更复杂的任务,因为样本数据不会作为样本存储在MP3文件中。如果你正在使用MP3,一种方法是将它们转换为WAV,然后反转WAV文件。