对于Java的MP3 /声音库有什么好的建议吗?

时间:2020-03-05 18:59:36  来源:igfitidea点击:

我正在寻找图书馆以:

  • 读取和写入元数据(例如mp3中的ID3v2标签和所有标签)
  • 将压缩后的数据转换为原始音频数据,并在可能的情况下将原始音频数据转换为mp3,ogg,aac,...
  • 数字处理音频数据(能量,音色,梅尔频率倒谱系数-MFCC,FFT,LPC,自相关,小波等)

我已经知道并且不满意:

  • JMF:Sun的原始文件,读取mp3并将其转换为WAV。但不读取元数据,也不提供任何高级数字处理功能。
  • FMJ:JMF的替代实现具有相同的局限性。
  • jAudio:不稳定,虽然潜力很大,但目前维护得不好。
  • Marsyas:在数字处理中,正是我所希望的,但是在C ++中。也许一些端口/集成已经可用?
  • JID3:用于元数据的API,但似乎已失效(最新版本2005/12/10)。
  • JLayer:用于阅读和播放的API,也已失效(最新更新2004/11/28)。
  • MetaMusic:该程序的API简洁明了,但是没有官方的独立开源项目。因此,没有社区,未来的支持以及所有...
  • Light Dev:一些有趣的功能,但还不完整。

这就是我自己的一些调查结果。我将不胜感激所有的意见,建议,批评家...

解决方案

回答

JLayer应该做我们需要的一切。它没有死,只是稳定。作者在很久以前就完成了它,此后MP3格式没有太大变化。我们会注意到他的MP3SPI代码库是最新的。 MP3SPI的作用是将JLayer的功能转换为JavaSound API。因此,我们可以采用任何JavaSound代码,将MP3SPI添加到类路径中,并期望MP3文件将开始工作。这很漂亮。 :)

回答

我们应该尝试研究gstreamer-java,我已经成功地通过它播放媒体,并且应该可以用它转换音频文件。还有JFFMpeg集成到JMF中,我没有花太多时间了解它,因此我不知道它的功能和状态的总范围,但是需要更仔细地研究。

回答

顺便说一句,我刚刚将我的MetaMusic项目移至http://github.com/cpesch/MetaMusic/,因为那里的基础设施要好得多。

回答

我们可以尝试Xuggler。这是在测试中的工作方式:

* read and write meta data (for example ID3v2 tags in mp3 and all):

如果基础容器类型在FFmpeg中具有元数据支持,则Xuggler支持它。

* convert compressed to to raw audio data and if possible raw audio data to mp3, ogg, aac, ...

Xuggler支持mp3,ogg(vorbis或者speex),speex,vorbis,flac,aac等。

* digitally process the audio data (energy, timbre, Mel Frequency Cepstral Coefficients - MFCC, FFT, LPC, Autocorrelation, Wavelet, ...)

Xuggler没有DSP模块,因此我们需要为此找到另一个库。但是Xuggler会给我们原始数据。