De bonnes recommandations pour les bibliothèques MP3 / Sound pour Java?

Je recherche des bibliothèques pour:

  • lire et écrire des métadonnées (par exemple, des balises ID3v2 au format mp3 et tout)
  • convertir des données compressées en données audio brutes et si possible des données audio brutes en mp3, ogg, aac, …
  • traiter numériquement les données audio (énergie, timbre, coefficients de pondération de fréquence Mel – MFCC, FFT, LPC, autocorrélation, ondelettes, …)

Je sais déjà et je ne suis pas content de:

  • JMF: original de Sun, lit les mp3 et les transforme en WAV. Mais ne lit pas les métadonnées et ne fournit aucune fonctionnalité de traitement numérique avancée.
  • FMJ : Implémentation alternative à JMF avec les mêmes limitations.
  • jAudio : Pas stable et bien que potentiel, actuellement pas bien entretenu.
  • Marsyas : En traitement numérique, exactement ce que j’avais espéré, mais en C ++. Peut-être qu’un port / intégration est déjà disponible?
  • JID3 : API pour les métadonnées, mais semble être mort (dernière version 2005/12/10).
  • JLayer : API pour lire et jouer, également morte (dernière mise à jour le 28/11/2004).
  • MetaMusic : l’API du programme est soignée mais pas de projet open source autonome. Donc n’a pas de communauté, support futur et tout …
  • Light Dev : Quelques fonctionnalités intéressantes, mais pas complètes.

C’est ce que certaines de mes propres enquêtes ont révélé. J’apprécierais beaucoup toutes les suggestions, suggestions, critiques, …

JLayer devrait faire tout ce dont vous avez besoin. Ce n’est pas mort, c’est juste stable. L’auteur l’a fini il y a longtemps et le format MP3 n’a pas beaucoup changé depuis. Vous remarquerez que sa base de code MP3SPI est un peu plus récente. Ce que fait MP3SPI, c’est de traduire les capacités de JLayer en API JavaSound. Ainsi, vous pouvez prendre n’importe quel code JavaSound, append MP3SPI au classpath et vous attendre à ce que les fichiers MP3 commencent à fonctionner. C’est assez chouette. 🙂

Vous pouvez essayer Xuggler . Voici comment cela se passe dans vos tests:

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

Si le type de conteneur sous-jacent prend en charge les métadonnées dans FFmpeg, Xuggler le prend en charge.

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

Xuggler prend en charge les fichiers mp3, ogg (vorbis ou speex), speex, vorbis, flac, aac, etc.

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

Xuggler n’a pas de modules DSP, vous devrez donc trouver une autre bibliothèque pour cela. Mais Xuggler vous donnera les données brutes.

Vous devriez essayer de regarder dans gstreamer-java , j’ai eu du succès avec la lecture de média via elle et il devrait être possible de convertir des fichiers audio avec elle. Il y a aussi JFFMpeg qui s’intègre à JMF, je n’ai pas beaucoup parlé de ça, donc je ne connais pas l’étendue totale de ses capacités et de son état, mais c’est quelque chose à examiner de plus près.

Au fait, je viens de déplacer mon projet MetaMusic sur http://github.com/cpesch/MetaMusic/ car l’infrastructure y est bien meilleure.