Воспроизведение. mp3 и.wav в Java?
как я могу играть .mp3 и .wav файл в моем Java-приложении? Я использую качели. Я пытался искать в интернете, что-то вроде этого примера:
public void playSound() {
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("D:/MusicPlayer/fml.mp3").getAbsoluteFile());
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
} catch(Exception ex) {
System.out.println("Error with playing sound.");
ex.printStackTrace();
}
}
но, это будет только играть .wav файлы.
то же самое с:
http://www.javaworld.com/javaworld/javatips/jw-javatip24.html
Я хочу иметь возможность играть как .mp3 файлы и .wav файлы с тем же методом.
12 ответов:
Java FX имеет
MediaиMediaPlayerклассы, которые будут воспроизводить mp3-файлы.пример кода:
String bip = "bip.mp3"; Media hit = new Media(new File(bip).toURI().toString()); MediaPlayer mediaPlayer = new MediaPlayer(hit); mediaPlayer.play();вам понадобятся следующие операторы импорта:
import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer;
Я написал чистый java mp3-плеер: mp3transform.
вы можете играть .wav только с Java API:
import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip;код:
AudioInputStream audioIn = AudioSystem.getAudioInputStream(MyClazz.class.getResource("music.wav")); Clip clip = AudioSystem.getClip(); clip.open(audioIn); clip.start();и play. mp3 с jLayer
Это было время, так как я использовал его, но JavaLayer отлично подходит для воспроизведения MP3
Я бы рекомендовал использовать BasicPlayerAPI. Это с открытым исходным кодом, очень просто и не требует JavaFX. http://www.javazoom.net/jlgui/api.html
после загрузки и извлечения zip-файла в путь сборки проекта необходимо добавить следующие jar-файлы:
- basicplayer3.0.банку
- все банки с lib каталог (внутри BasicPlayer3. 0)
здесь минималистичный пример использования:
String songName = "HungryKidsofHungary-ScatteredDiamonds.mp3"; String pathToMp3 = System.getProperty("user.dir") +"/"+ songName; BasicPlayer player = new BasicPlayer(); try { player.open(new URL("file:///" + pathToMp3)); player.play(); } catch (BasicPlayerException | MalformedURLException e) { e.printStackTrace(); }необходимого импорта, так:
import java.net.MalformedURLException; import java.net.URL; import javazoom.jlgui.basicplayer.BasicPlayer; import javazoom.jlgui.basicplayer.BasicPlayerException;это все, что вам нужно, чтобы начать играть музыку. Игрок запускает и управляет своим собственным потоком воспроизведения и предоставляет воспроизведение, пауза, возобновление, остановка и искать функциональность.
для более продвинутого использования вы можете взглянуть на музыкальный плеер jlGui. Это клон WinAmp с открытым исходным кодом: http://www.javazoom.net/jlgui/jlgui.html
первый класс, чтобы посмотреть будет PlayerUI (внутри пакета javazoom.jlgui.игрок.усилитель.) Он демонстрирует расширенные возможности BasicPlayer довольно хорошо.
С использованием стандартного пакета javax.sound API, одна зависимость Maven, полностью открытый исходный код (Java 7 требуются) :
пом.xml
<!-- We have to explicitly instruct Maven to use tritonus-share 0.3.7-2 and NOT 0.3.7-1, otherwise vorbisspi won't work. --> <dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>tritonus-share</artifactId> <version>0.3.7-2</version> </dependency> <dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>mp3spi</artifactId> <version>1.9.5-1</version> </dependency> <dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>vorbisspi</artifactId> <version>1.0.3-1</version> </dependency>код
import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine.Info; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.UnsupportedAudioFileException; import static javax.sound.sampled.AudioSystem.getAudioInputStream; import static javax.sound.sampled.AudioFormat.Encoding.PCM_SIGNED; public class AudioFilePlayer { public static void main(String[] args) { final AudioFilePlayer player = new AudioFilePlayer (); player.play("something.mp3"); player.play("something.ogg"); } public void play(String filePath) { final File file = new File(filePath); try (final AudioInputStream in = getAudioInputStream(file)) { final AudioFormat outFormat = getOutFormat(in.getFormat()); final Info info = new Info(SourceDataLine.class, outFormat); try (final SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info)) { if (line != null) { line.open(outFormat); line.start(); stream(getAudioInputStream(outFormat, in), line); line.drain(); line.stop(); } } } catch (UnsupportedAudioFileException | LineUnavailableException | IOException e) { throw new IllegalStateException(e); } } private AudioFormat getOutFormat(AudioFormat inFormat) { final int ch = inFormat.getChannels(); final float rate = inFormat.getSampleRate(); return new AudioFormat(PCM_SIGNED, rate, 16, ch, ch * 2, rate, false); } private void stream(AudioInputStream in, SourceDataLine line) throws IOException { final byte[] buffer = new byte[4096]; for (int n = 0; n != -1; n = in.read(buffer, 0, buffer.length)) { line.write(buffer, 0, n); } } }ссылки:
самый простой способ, который я нашел, это загрузить файл jlayer jar из http://www.javazoom.net/javalayer/sources.html и добавить его в библиотеку Jar http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29
вот код для класса
public class SimplePlayer { public SimplePlayer(){ try{ FileInputStream fis = new FileInputStream("File location."); Player playMP3 = new Player(fis); playMP3.play(); } catch(Exception e){ System.out.println(e); } } }а вот импортные
import javazoom.jl.player.*; import java.io.FileInputStream;
чтобы дать читателям другую альтернативу, я предлагаю Jaco MP3 Player library, кросс-платформенный java mp3-плеер.
характеристики:
- очень низкая загрузка процессора (~2%)
- невероятная маленькая библиотека (~90 КБ)
- не нужен JMF (Java Media Framework)
- простота интеграции в любое приложение
- простота интеграции в любой веб-странице (как апплет).
для полного списка его методов и атрибуты вы можете проверить его документацию здесь.
пример кода:
import jaco.mp3.player.MP3Player; import java.io.File; public class Example1 { public static void main(String[] args) { new MP3Player(new File("test.mp3")).play(); } }для более подробной информации, я создал простой учебник здесь что включает в себя загружаемый исходный код.
сначала нужно установить JMF (скачать по этой ссылке)
File f = new File("D:/Songs/preview.mp3"); MediaLocator ml = new MediaLocator(f.toURL()); Player p = Manager.createPlayer(ml); p.start();Не забудьте добавить jmf jar файлы
выполните поиск freshmeat.net для библиотеки JAVE (расшифровывается как Java Audio Video Encoder) (link здесь). Это библиотека для таких вещей. Я не знаю, есть ли у Java собственная функция mp3.
вероятно, вам нужно будет обернуть функцию mp3 и функцию wav вместе, используя наследование и простую функцию-оболочку, если вы хотите, чтобы один метод запускал оба типа файлов.
чтобы добавить поддержку чтения MP3 в звук Java, добавьте
mp3plugin.jarиз JMF в путь класса времени выполнения приложения.отметим, что
Clipкласс имеет ограничения памяти, которые делают его непригодным для более чем на несколько секунд звук высокого качества.
используйте эту библиотеку: импорт ВС.звуковой.*;
public void Sound(String Path){ try{ InputStream in = new FileInputStream(new File(Path)); AudioStream audios = new AudioStream(in); AudioPlayer.player.start(audios); } catch(Exception e){} }
Comments