Есть ли какой-нибудь чистый способ конвертировать .wav в .mp3? - PullRequest
5 голосов
/ 15 февраля 2011

Я много боролся с Java, но не смог объединить рабочий пример конвертера Java .wav в .mp3. Этот конвертер будет использоваться в апплете Java, поэтому он должен зависеть только от библиотек, написанных на чистом Java, без базовых вызовов кода C.

Кто-нибудь может привести полностью рабочий пример?

Спасибо

Ответы [ 6 ]

6 голосов
/ 15 февраля 2011

Прочитайте ваш волновой файл @ http://java.sun.com/javase/technologies/desktop/media/jmf/ и закодируйте в mp3 @ http://openinnowhere.sourceforge.net/lameonj/

Как указывалось, lameonj не является решением pure java.Для этого опции не кажутся такими уж многочисленными, но посмотрите на другой вопрос SO: Кодировка MP3 в Java

3 голосов
/ 27 сентября 2017

Я использую Jump3r для преобразования wav в mp3 в моем проекте, потому что html5-плеер IE11 не может воспроизводить файлы wav.

Jump3r - самое простое решение для запуска внутри сервлета tomcat. Я не смог интегрировать другие решения, такие как jave, конечно, из-за менеджера безопасности ... Jump3r - это чистая Java-программа.

Jump3r доступен в репозитории maven (https://mvnrepository.com/artifact/de.sciss/jump3r/1.0.4), а источники доступны на github (https://github.com/Sciss/jump3r)

Чтобы преобразовать файл, вы должны вызвать метод main (в следующем коде я использую встроенную версию метода main, чтобы перехватить / выбросить IOException, если необходимо)

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 голосов
/ 15 февраля 2011

Если скорость не важна для вас, возьмите любую реализацию MP3 (например, хромая) и попробуйте скомпилировать ее с NestedVM в байт-код Java. Это будет медленно (как эмулятор в эмуляторе), но должно работать.

И это должно быть намного меньше, чем пытаться портировать библиотеку MP3 на чистую Java.

0 голосов
/ 07 июля 2014

См. Эту ссылку на SourceForge http://sourceforge.net/projects/jump3r/files/

Это только JAR-файл (без исходного кода), но он работает как на ПК, так и на Android, но не обязательно, как описано в публикации авторов http://pure -java-mp3-encoder.blogspot.com.au /

Я получил его на работу, просто используя файл jump3r-1.0.3.jar, как библиотеку, и создал экземпляр mp3.Mainзатем использовал названный mp3.run (), например, часть моего кода 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.
    }   

Я подозреваю, что можно было бы напрямую вызывать хромой кодер, передавая буферы данных и т. д., но как точный API для этой версии Javaне задокументировано, это потребует некоторых исследований

0 голосов
/ 24 апреля 2011

Просто проверьте следующий исходный код.http://jsidplay2.cvs.sourceforge.net/jsidplay2/jump3r Он все еще находится в стадии разработки, но является рабочим примером кодирующей части библиотеки lame на чистой основе.

0 голосов
/ 15 февраля 2011

Еще один потенциально важный проект - jffmpeg . Очевидно, это нацелено на поддержку JMF для широкого спектра форматов с использованием как нативных, так и Java-кодеков. Судя по странице «форматы», они добились значительных успехов на стороне чистой Java. К сожалению, проект затих.

Это не поможет напрямую ОП в краткосрочной перспективе. Но если он или кто-то еще хотят иметь чистые Java-кодеки в долгосрочной перспективе, подумайте о том, чтобы принять участие.

...