?
Solved

Playing MP3 sound in a Java applet.

Posted on 2006-04-24
5
Medium Priority
?
508 Views
Last Modified: 2010-05-18
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
0
Comment
Question by:MiloDC
  • 3
  • 2
5 Comments
 

Author Comment

by:MiloDC
ID: 16528364
Update: Tried different encoding, still no luck...

-- MiloDC
0
 
LVL 92

Expert Comment

by:objects
ID: 16530458
how did u install the mp3 service provider?
0
 

Author Comment

by:MiloDC
ID: 16531023
> 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
 
LVL 92

Accepted Solution

by:
objects earned 1000 total points
ID: 16531054
try putting them on your server and adding them in the archive parameter of your applet tag
0
 

Author Comment

by:MiloDC
ID: 16531164
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

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
Suggested Courses
Course of the Month16 days, 23 hours left to enroll

862 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question