我正在开发一个简单的Java音频播放器。我需要的唯一高级功能是频率过滤器。它不一定是具有特定频率范围不同增益的全功能均衡器函数:一个低通滤波器可以截止高于指定值的频率。我研究了jlGui,它有一个均衡器,但它只适用于MP3数据,而我将要播放的文件是OGG。通过浏览各种答案,我发现像Xuggler或Jave这样的ffmpeg包装器可能是一个解决方案。但我没有找到任何教程,甚至没有处理使用ffmpeg进行频率过滤的起点。此外,JMF被描述为实现这种功能的有效选择,但我没有找到足够具体的东西。
我最终使用了这个解决方案(适用于Windows应用程序): Equalizer APO 它利用了Windows Vista及更高版本上可用的音频处理对象技术。我的应用程序只需要编辑一个配置文本文件,APO就会完成剩下的工作。 显然,它是平台相关的,我必须安装一个外部应用程序才能使我的过滤器工作,但在我的情况下是可以接受的,并且很容易实现。
http://www.cs.ubc.ca/~kvdoel/jass/doc/index.html 这是由加拿大不列颠哥伦比亚大学开发的JASS项目的JavaDoc。它可以免费用于非商业用途。您应该能够使用它来实现大多数类型的过滤器。请检查上面几个级别的URL以获取实际源代码下载。
我找到了一个叫做JEQ的旧项目 它基于javax.sound并使用IIR来创建10/15/25/31频段均衡器。它可以处理PCM数据(不仅仅是像其他一些工具只能处理MP3),所以我希望我能够让它与OGG一起使用。我的唯一担忧是输出质量,在我的一些测试中并不是很好。我需要进行调查。