Eine mp3 Datei in Java abspielen

MABY

Mitglied
Hallöchen Freunde!
Ich arbeite zur Zeit an einem kleinen Spiel. Grundsätzlich ist das Spiel von der GUI vollendet, allerdings benötige ich noch Sounds für das Spiel. Diese Sounds sollen am besten mp3 Dateien sein. Nun meine Frage: Wie kann ich mp3 Dateien in Java abspielen. Diese Frage wurde schon in mehreren Foren gestellt, allerdings konnte ich mit den gesamten Antworten nichts anfangen.
So sollte der Code dafür aussehen:
Code:
public class Mp3_Abspieler {
 
   public static void main(String args[]) {
 
       Mp3_Abspieler abspieler = new Mp3_Abspieler();
       abspieler.dateiAbspielen("/Users/maby/Desktop/Sound.mp3");
  
   }

   public void dateiAbspielen(String Dateipfad) {
       //Hier soll der Code fuer einen Mp3-Abspieler hin

   }

}
Danke!
 
Spontan fallen mir einige Methoden ein:

http://www.java2s.com/Code/Java/JavaFX/Playmp3file.htm

Java:
public class Main extends Application {

   @Override
   public void start(Stage primaryStage) {
       String path = Test.class.getResource("/meineDatei.mp3").toString();
       Media media = new Media(path);
       MediaPlayer mp = new MediaPlayer(media);
       mp.play();

       System.out.println("Playing...");
   }

   public static void main(String[] args) {
       launch(args);
   }

}
Quelle: https://stackoverflow.com/questions/24347658/getting-a-mp3-file-to-play-using-javafx
 
Danke für deine Antwort. Leider funktionieren beide Möglichkeiten bei mir nicht. Egal welche Möglichkeit ich ausprobiere, es kommt immer die "java.lang.reflect.InvocationTargetException".
Bildschirmfoto 2017-10-16 um 14.27.54.png
Kenne mich mit den Exceptions noch nicht so aus. Wodurch wird diese Exception ausgelöst? Wie kann ich sie vermeiden?
LG MABY
 
@MABY Weil jedes GUI Framework andere Möglichkeiten mitbringt.
Bei Swing weiß ich es aber leider auch nicht mehr so genau, ich bin mir sicher, dass es möglich ist, aber nicht mehr wie.
 
Mal en Frage,
wieso muss ich den Umweg gehen über m, temp1 und temp2 sowie brauche dringend zwingend das JMF 2.1.1e zum Abspielen MP3 s?
Java:
    com.mpatric.mp3agic.Mp3File m = new Mp3File(f);
    AudioInputStream temp1 = AudioSystem.getAudioInputStream(f);
    AudioFormat temp2 = temp1.getFormat();
    AudioInputStream audioStream = AudioSystem.getAudioInputStream(
            new AudioFormat(
                    AudioFormat.Encoding.PCM_SIGNED,
                    m.getSampleRate(),
                    16,
                    temp2.getChannels(),
                    temp2.getChannels() * 2,
                    m.getSampleRate(),
                    temp2.isBigEndian()), temp1);

    AudioFormat format = audioStream.getFormat();
//playit...

AudioFormat kennt Sample Rate nich, wieso externe Lib, wieso ist sampleSizeInBits immer 16, wieso ist frameSize immer das doppelte der channels?

Nun läuft es:
44 / 370 / 320kb / (CBR) / 44100 Hz

Mir scheint das wurde sooooo konzipiert dass man damit überhaupt nich MP3 s abspielen SOLL!!!!!
 
MP3-Support war/ist(?) nicht enthalten

@mihe7 es lüppt hiermit aber ich bin noch nicht hellauf begeistert:
Java:
    private static boolean tryToPlay(File[] listFiles, int index) {
        try {
            File f = listFiles[index];
            com.mpatric.mp3agic.Mp3File m = new Mp3File(f);
            AudioInputStream temp1 = AudioSystem.getAudioInputStream(f);
            AudioFormat temp2 = temp1.getFormat();
            AudioInputStream audioStream = AudioSystem.getAudioInputStream(
                    new AudioFormat(
                            AudioFormat.Encoding.PCM_SIGNED,
                            m.getSampleRate(),
                            16,
                            temp2.getChannels(),
                            temp2.getChannels() * 2,
                            m.getSampleRate(),
                            temp2.isBigEndian()), temp1);

            AudioFormat format = audioStream.getFormat();

            DataLine.Info info = new DataLine.Info(Clip.class, format);

            try (Clip audioClip = (Clip) AudioSystem.getLine(info)) {
                LListener llistener = new LListener();

                audioClip.addLineListener(llistener);

                audioClip.open(audioStream);

                audioClip.start();

                while (!llistener.playCompleted) {


                    // wait for the playback completes
                    Thread.sleep(1000);
                }
            }

            return true;
        } catch (InvalidDataException | UnsupportedTagException | IOException | InterruptedException | LineUnavailableException | UnsupportedAudioFileException e) {
            e.printStackTrace();

            return false;
        }
    }
 

Zurück
Oben