¿Alguna buena recomendación para bibliotecas de MP3 / Sonido para Java?

Estoy buscando bibliotecas para:

  • leer y escribir metadatos (por ejemplo, tags ID3v2 en mp3 y todo)
  • convertir datos de audio comprimidos a raw y, si es posible, datos de audio en bruto a mp3, ogg, aac, …
  • procesar digitalmente los datos de audio (energía, timbre, Coeficientes Cepstrales de Frecuencia Mel – MFCC, FFT, LPC, autocorrelación, Wavelet, …)

Ya lo sé y no estoy satisfecho con:

  • JMF: original de Sun, lee mp3 y lo convierte en WAV. Pero no lee metadatos ni proporciona funciones avanzadas de procesamiento digital.
  • FMJ : implementación alternativa a JMF con las mismas limitaciones.
  • jAudio : no estable y aunque potencial, actualmente no está bien mantenido.
  • Marsyas : en el procesamiento digital justo lo que esperaba, pero en C ++. Tal vez algún puerto / integración ya disponible?
  • JID3 : API para metadatos, pero parece estar muerto (última versión, 12/12/10).
  • JLayer : API para leer y jugar, también está muerto (última actualización, 18/11/2004).
  • MetaMusic : la API del progtwig es ordenada, pero no es un proyecto de fuente abierta autónomo oficial. Por lo tanto, no tiene comunidad, apoyo futuro y todo …
  • Light Dev : algunas características interesantes, pero no del todo completas.

Esto es lo que ha surgido de mi propia investigación. Agradecería mucho cualquier aporte, sugerencia, crítica, …

    JLayer debería hacer todo lo que necesites. No está muerto, es estable. El autor lo terminó hace bastante tiempo y el formato MP3 no ha cambiado mucho desde entonces. Notarás que su base de código MP3SPI es un poco más reciente. Lo que hace MP3SPI es que traduce las capacidades de JLayer en API de JavaSound. Por lo tanto, puede tomar cualquier código JavaSound, agregar MP3SPI a la ruta de clases y esperar que los archivos MP3 comiencen a funcionar. Es bastante ingenioso. 🙂

    Podrías probar Xuggler . Así es como funciona en tus pruebas:

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

    si el tipo de contenedor subyacente tiene soporte de metadatos en FFmpeg, Xuggler lo admite.

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

    Xuggler admite mp3, ogg (vorbis o speex), speex, vorbis, flac, aac, etc.

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

    Xuggler no tiene módulos DSP, por lo que necesitarás encontrar otra biblioteca para eso. Pero Xuggler te dará los datos brutos.

    Deberías intentar buscar en gstreamer-java , he tenido éxito al reproducir medios a través de él y debería ser posible convertir archivos de audio con él. También hay JFFMpeg que se integra en JMF, no he hurgado tanto con él, así que no sé el scope total de sus capacidades y estado, pero es algo que hay que observar más de cerca.

    Por cierto, acabo de mover mi proyecto MetaMusic a http://github.com/cpesch/MetaMusic/ ya que la infraestructura allí es mucho mejor.