2011-02-14 12 views
5

He luchado mucho con Java pero no he podido combinar un ejemplo de Java .wav con el convertidor .mp3. Este convertidor se usará en un applet de Java, por lo que debería depender únicamente de las bibliotecas escritas en Java puro sin llamadas de código C subyacentes.¿Hay alguna forma pura de Java para convertir .wav a .mp3?

¿Alguien puede proporcionar un ejemplo completamente funcional?

Gracias

+0

Bueno, necesitaría un decodificador .way y un codificador .mp3 escrito en Java puro. ¿Hay tal cosa? Lo dudo. – delnan

+0

posible duplicado de [Codificación de MP3 en Java] (http://stackoverflow.com/questions/316612/mp3-encoding-in-java) –

+0

cerrar, aunque las respuestas aquí fueron mucho más útiles –

Respuesta

6

leer su archivo de onda @http://java.sun.com/javase/technologies/desktop/media/jmf/ y codificar a mp3 @http://openinnowhere.sourceforge.net/lameonj/

Como se ha señalado, LAMEOnJ no es una solución pura de Java . Para eso las opciones no parecen tantas, pero vea la otra pregunta SO: MP3 Encoding in Java

+0

que se requerirán los archivos binarios de LAME nativos – mihi

+0

+1 por concisión –

+0

Gracias, creo que combinaré su respuesta con la respuesta de NestedVM –

3

Si la velocidad no es importante para usted, tome cualquier implementación c de MP3 (por ejemplo, cojo) y trate de compilarla con NestedVM en Java bytecode. Será lento (como un emulador en un emulador), pero debería funcionar.

Y debería ser mucho menos trabajo que tratar de portar una biblioteca MP3 a Java puro.

+0

Gracias, parece que esta es mi única opción. –

+0

+1 por traer a NestedVM a mi atención. Muy genial. –

0

Otro proyecto potencialmente relevante es jffmpeg. Esto aparentemente apuntaba a un soporte de JMF para una amplia gama de formatos usando codecs tanto nativos como de Java. A juzgar por la página de 'formatos', hicieron un progreso significativo en el lado puro de Java. Lamentablemente, el proyecto se ha quedado en silencio.

Esto no ayuda directamente al OP en el corto plazo. Pero si él u otros desean tener códecs Java puros a largo plazo, considere involucrarse.

0

Ver este enlace en SourceForge http://sourceforge.net/projects/jump3r/files/

solamente (sin código fuente) de Su JAR, pero funciona tanto en PC y Android, pero no necesariamente como se describe en los autores publicar http://pure-java-mp3-encoder.blogspot.com.au/

lo tengo para trabajar simplemente usando el archivo jump3r-1.0.3.jar, como una biblioteca, y instanciado mp3.Main luego se usa llamado mp3.run() por ej. parte de mi código de Android

String[] mp3Args = {"--preset","standard", 
      "-q","0", 
      "-m","s", 
      Environment.getExternalStorageDirectory().getPath()+"/myfile.wav", 
      Environment.getExternalStorageDirectory().getPath()+"/myfile.mp3"}; 
    Main m = new mp3.Main(); 
    try 
    { 
     m.run(mp3Args); 
    } 
    catch(Exception e) 
    { 
     System.out.println("ERROR processing MP3 " + e);// Some bug in Android seems to cause error BufferedOutputSteam is Closed. But it still seems to work OK. 
    } 

sospecho que sería posible llamar directamente al codificador cojo pasa memorias intermedias de datos, etc, pero a medida que la API exacta de esta versión de Java no está documentado, se requeriría una investigación

2

Uso Jump3r para convertir wav a mp3 en mi proyecto porque el reproductor html5 de IE11 no puede reproducir archivos wav.

Jump3r es la solución más simple para ejecutar dentro de un servlet de tomcat. No pude integrar otras soluciones como jave sin duda debido al administrador de seguridad ... Jump3r es un programa Java puro.

Jump3r está disponible en el repositorio de Maven (https://mvnrepository.com/artifact/de.sciss/jump3r/1.0.4) y las fuentes están disponibles en GitHub (https://github.com/Sciss/jump3r)

para convertir un archivo, se debe llamar al método principal (en el código siguiente, utilizo una versión inline del método principal para atrapar/lanzar una IOException si es necesario)

private void convertWavFileToMp3File(File source, File target) throws IOException { 
    String[] mp3Args = { "--preset","standard", 
     "-q","0", 
     "-m","s", 
     source.getAbsolutePath(), 
     target.getAbsolutePath() 
    }; 
    (new Main()).run(mp3Args); 
} 
Cuestiones relacionadas