Android如何对WAV文件应用音频效果并保存

8

需求

在Android中打开SD卡中的.wav文件,播放它,并添加一些效果(如回音、音高变化等),保存带有效果的文件。简单吧 :(

我知道的

  1. 我可以使用Soundpool或MediaPlayer打开和播放文件。
  2. 我可以在播放时使用两者之一给予一些效果。例如,对于MediaPlayer, 我可以设置环境混响效果。使用SoundPool,我可以设置播放速率,这 有点像音高变化。我现在已经成功地实现了这些。
  3. 但是,这两个类都没有任何方法来保存播放的文件。所以我只能播 放,不能保存带有音效的音乐。

我想知道的

  1. 除了MediaPlayer或SoundPool之外,是否还有其他感兴趣的类? 不要担心保存,只需提到类名,我将研究如何使用它们保存文件。
  2. 是否有第三方库,可以添加效果并保存?如果是开源和免费的, 那就太好了。但即使是专有的,请也一并提及。
  3. 其他我可以查看的领域。OpenAL是否支持语音过滤以及语音定位? 它是否适用于Android?

准备好做脏活了。请给我指路..

编辑:

进行了更多搜索,发现AudioTrack。但它也不支持保存到文件。所以也没有什么运气..

编辑

好吧,如果我自己来做呢?从wav文件中获取原始字节,并在其中工作。我使用AudioRecord录制了一个wav文件,得到了一个wav文件。是否有任何描述低级音频处理(我指字节级别)的资源。

编辑

好吧,赏金时间到了,我会把赏金给唯一的答案。经过7天的时间,我明白了以下内容:

  1. 我们无法使用MediaPlayer、AudioTrack等保存我们所播放的内容。
  2. 没有可用的音频处理库。
  3. 您可以获取原始的wav文件,并自己进行音频处理。该答案提供了一个很好的包装类,用于读取/写入wav文件。一个很好的用Java编写的读取和改变wav文件音高的代码在这里

@VipulShah 你有关于如何做到这一点的想法吗? - Krishnabhadra
希望这可以帮到你。我不知道你是否可以通过这种方式添加效果:http://www.stealthcopter.com/blog/2010/01/android-saving-a-sound-file-to-sd-from-resource-and-setting-as-ringtone/ - Bruno Bieri
麦克风传来的实时流是否可以添加效果? - Adil Malik
@Krishnabhadra:你完成了在保存后添加效果的工作吗?如果是,你能分享一下代码吗?这将拯救我的生命 :) - Pradeep Bishnoi
@PradeepBishnoi 抱歉朋友,我已经在5年前完成了这个项目。我不再拥有那段代码的访问权限。 - Krishnabhadra
显示剩余4条评论
1个回答

5
WavFile 类(http://www.labbookpages.co.uk/audio/javaWavFiles.html)声称可以读写 wav 文件并允许通过样本值数组进行每个样本的操作。它的总源代码只有 23KB,非常小巧。
我曾经尝试使用包含 WavFile 类的 Android 应用程序,但是遇到了困难。这是因为 WavFile 和 ReadExample(来自上述链接)都是作为独立的 Java 程序编写的,并且包含一个方法 main(String [] args){}。Eclipse 看到这个并认为这个类是一个可独立运行的程序。当我点击 run 按钮时,它会尝试在开发机器上仅执行一个类,而不是将整个应用程序启动到我的手机。当我小心地使用下拉菜单上的 run 按钮运行整个应用程序时,就不会有任何问题,WavFile 类和示例直接导入,IDE 中没有警告,并且在我的手机上按照广告运行。

麦克风传来的实时流是否可以添加效果? - Adil Malik
抱歉,我不知道。 - emrys57

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