Java und mp3

Technoblade

Erfahrenes Mitglied
Hi,
ich bin neu hier im Forum und hab direkt mal eine Frage ;)

Folgendes ist Code aus einem beispiel aus dem Buch Java lernen mit BlueJ
mich persönlich interessiert hier der mittlere Teil in dem das tmp Format erstellt wird. Dieses würde ich gerne auch für mp3 umsetzen für ein Schulprojekt. Wenn ich allerdings versuche eine mp3 Datei zu laden wird direkt in der Zeile unter dem Try eine Exception geworfen. Diese sieht wie folgt aus: "could not get audio input stream from input file". Ich habe mittlerweile schon gesehn, dass es viele Packages die von Nutzern geschrieben wurden gibt. Allerdings hat mir keins davon (soweit die Links nicht zu Error 404 führten) weitergeholfen. Jetzt ist meine simple Frage, gibt es eine möglichst triviale Möglichkeit in Java mp3's zu laden oder müssen wir jegliche Sounds konvertieren?


Code:
private boolean ladeSound(File datei) 
    {
        aktuellerClipLaenge = 0;

        try {
            AudioInputStream stream = AudioSystem.getAudioInputStream(datei);
            AudioFormat format = stream.getFormat();

            // Wir können ALAW/ULAW nicht abspielen,
            // also konvertieren wir sie nach PCM
            //
            if ((format.getEncoding() == AudioFormat.Encoding.ULAW) ||
                (format.getEncoding() == AudioFormat.Encoding.ALAW)) 
            {
                AudioFormat tmp = new AudioFormat(
                                          AudioFormat.Encoding.PCM_SIGNED, 
                                          format.getSampleRate(),
                                          format.getSampleSizeInBits() * 2,
                                          format.getChannels(),
                                          format.getFrameSize() * 2,
                                          format.getFrameRate(),
                                          true);
                stream = AudioSystem.getAudioInputStream(tmp, stream);
                format = tmp;
            }
            DataLine.Info info = new DataLine.Info(Clip.class, 
                                           stream.getFormat(),
                                           ((int) stream.getFrameLength() *
                                           format.getFrameSize()));

            aktuellerClip = (Clip) AudioSystem.getLine(info);
            aktuellerClip.open(stream);
            aktuellerClipFrameGroesse = (int) stream.getFrameLength();
            aktuellerClipLaenge = (int) (aktuellerClip.getBufferSize() / 
                              (aktuellerClip.getFormat().getFrameSize() * 
                              aktuellerClip.getFormat().getFrameRate()));
            return true;
        } catch (Exception ex) {
            aktuellerClip = null;
            return false;
        }
    }
 
Es gibt diverse Libraries MP3 in Java verfügbar zu machen.

1.) Das JMF (Java Media Framework) mit mp3 Support von sun
2.) Das FMJ, API-Kompatibel zum JMF, wird aber (im Gegensatz zum JMF) supported und weiterentwickelt
3.) JLayer von javazoom.net
4.) BasicPlayer von javazoom.net

Hab jetzt deinen Code nur überflogen, aber wenn du nur Musik wiedergeben möchtest, gibt es auch eine sehr viel einfachere Möglichkeit über AudioClip.
 
Zurück