Playing MP3 sound in a Java applet.

Anyone gotten JavaZOOM's MP3 SPI working?

Using their code example at http://www.javazoom.net/mp3spi/documents.html, and R.J. Lorimer's example at http://www.javalobby.org/java/forums/t18465.html (which is essentially the same thing), I can only play AIF and AU files.  When I attempt to play an MP3, I get an error, "javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input URL([path to audio file])."

The procedure in my code is:


      private void mp3Play(URL urlMP3) {
            try {
                  AudioInputStream audioIn = AudioSystem.getAudioInputStream(urlMP3);
                  AudioFormat baseFormat = audioIn.getFormat();
                  AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                                                                                    baseFormat.getSampleRate(),
                                                                                    16,
                                                                                    baseFormat.getChannels(),
                                                                                    baseFormat.getChannels() * 2,
                                                                                    baseFormat.getSampleRate(),
                                                                                    false);
                  AudioInputStream dataIn = AudioSystem.getAudioInputStream(decodedFormat, audioIn);
                  byte[] data = new byte[4096];
                  DataLine.Info info = new DataLine.Info(SourceDataLine.class, decodedFormat);
                  SourceDataLine line = null;
                  line = (SourceDataLine)AudioSystem.getLine(info);
                  line.open(decodedFormat);
                  if (line != null) {
                        line.start();
                        int nBytesRead = 0, nBytesWritten = 0;

                        while (nBytesRead != -1) {
                              nBytesRead = dataIn.read(data, 0, data.length);
                              if (nBytesRead != -1)
                                    nBytesWritten = line.write(data, 0, nBytesRead);
                        }

                        line.drain();
                        line.stop();
                        line.close();
                        dataIn.close();
                  }
                  audioIn.close();
            } catch (Exception e) {
                  System.out.println("MP3 PLAYBACK ERROR: " + e.toString() + "(" + urlMP3.toString() + ")");
            }
      }


Again, this code works fine if I specify an AIF or AU file.  I suspect that the format of the MP3 file that I'm trying to play is incompatible with the code, but I haven't tried encoding the sound differently, yet.

Help!


-- MiloDC
MiloDCAsked:
Who is Participating?
 
objectsCommented:
try putting them on your server and adding them in the archive parameter of your applet tag
0
 
MiloDCAuthor Commented:
Update: Tried different encoding, still no luck...

-- MiloDC
0
 
objectsCommented:
how did u install the mp3 service provider?
0
 
MiloDCAuthor Commented:
> Comment from objects

> how did u install the mp3 service provider?

Man, I just put jl1.0.jar, tritonus_share.jar, and mp3spi1.9.4.jar in my CLASSPATH.  No further set-up is outlined on either of the two pages that I mentioned, above; is there more to installing the SPI than this?  If so, is it going to be possible for me to employ the MP3 SPI in an applet?


-- MiloDC
0
 
MiloDCAuthor Commented:
Awesome, objects, that did it!

I just added ARCHIVE="jl1.0.jar,mp3spi1.9.4.jar,tritonus_share.jar" to the APPLET tag, and it worked.

Thanks!


-- MiloDC
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.