Existe-t-il un moyen java pur de convertir.wav à. mp3?


J'ai beaucoup lutté avec Java mais je n'ai pas pu combiner un exemple de travail de Java .convertisseur wav en. mp3. Ce convertisseur sera utilisé dans une applet Java, il ne devrait donc dépendre que des bibliothèques écrites en Java pur sans appels de code C sous-jacents.

Quelqu'un peut-il fournir un exemple pleinement fonctionnel?

Merci

Author: skaffman, 2011-02-15

6 answers

Lire votre fichier wave @ http://java.sun.com/javase/technologies/desktop/media/jmf/ et encoder en mp3 @ http://openinnowhere.sourceforge.net/lameonj/

Comme indiqué, lameonj n'est pas une solution javapure . Pour cela, les options ne semblent pas si nombreuses, mais voir l'autre question SO: Encodage MP3 en Java

 6
Author: Nathan Kidd, 2017-05-23 12:17:58

Si la vitesse n'est pas importante pour vous, prenez n'importe quelle implémentation c de MP3 (par exemple boiteux) et essayez de la compiler avec NestedVM en bytecode Java. Il sera lent (comme un émulateur dans un émulateur), mais il devrait fonctionner.

Et cela devrait être beaucoup moins de travail que d'essayer de porter une bibliothèque MP3 en Java pur.

 3
Author: mihi, 2011-02-14 22:33:13

J'utilise Jump3r pour convertir wav en mp3 sur mon projet car le lecteur html5 de IE11 ne peut pas lire les fichiers wav.

Jump3r est la solution la plus simple trouvée pour fonctionner dans un servlet tomcat. Je n'ai pas pu intégrer d'autres solutions comme jave certainement en raison du responsable de la sécurité... Jump3r est un programme java pur.

Jump3r est disponible sur le référentiel maven (https://mvnrepository.com/artifact/de.sciss/jump3r/1.0.4) et les sources sont disponibles sur github (https://github.com/Sciss/jump3r)

Pour convertir un fichier, vous devez appeler la méthode main (dans le code suivant, j'utilise un inline version de la méthode main pour attraper/lancer une IOException si nécessaire)

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);
}
 3
Author: kitekat75, 2017-09-27 09:55:40

Un autre projet potentiellement pertinent est jffmpeg. Cela visait apparemment à un support JMF pour un large éventail de formats utilisant à la fois des codecs natifs et Java. À en juger par la page "formats", ils ont fait des progrès significatifs du côté de Java pur. Malheureusement, le projet est allé tranquille.

Cela n'aide pas directement l'OP à court terme. Mais si lui ou d'autres souhaitent avoir des codecs Java purs à long terme, envisagez de vous impliquer.

 0
Author: Stephen C, 2011-02-14 23:38:33

Il suffit de vérifier le code source suivant. http://jsidplay2.cvs.sourceforge.net/jsidplay2/jump3r C'est toujours un travail en cours, mais un exemple de travail de la partie encodeur d'une bibliothèque boiteuse basée sur Java pur.

 0
Author: kenchis, 2011-04-23 20:08:05

Voir ce lien sur SourceForge http://sourceforge.net/projects/jump3r/files/

Son JAR est seulement (pas de code source), mais il fonctionne à la fois sur PC et Android, mais pas nécessairement comme décrit dans la publication des auteurs http://pure-java-mp3-encoder.blogspot.com.au/

Je l'ai fait fonctionner en utilisant simplement le jump3r-1.0.3.fichier jar, en tant que bibliothèque, et instancié mp3.Main puis utilisé appelé mp3.exécuter() par exemple, une partie de mon code 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.
    }   

Je soupçonne que ce serait possible d'appeler directement l'encodeur boiteux passant des tampons de données, etc., mais comme l'API exacte pour cette version Java n'est pas documentée, cela nécessiterait des recherches

 0
Author: RogerClark, 2014-07-07 02:44:26