首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于java的音乐播放器只能识别.wav文件格式

基于java的音乐播放器只能识别.wav文件格式
EN

Stack Overflow用户
提问于 2013-03-09 03:08:50
回答 2查看 2K关注 0票数 0

我正在尝试做一个简单的基于java框架的音乐播放器。我已经成功地做到了这一点,但如果它只播放.wav文件。即使我将load file条件更改为.mp3,然后加载mp3文件,它也会显示UnsupportedAudioFileException。请帮我纠正一下。这是我的代码,请告诉我需要做的整改,以停止显示此错误的命令。

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.sound.sampled.*;
import java.io.*;
import java.net.*;

public class MusicPlayer extends Thread implements ActionListener {

    JLabel label;
    AudioInputStream ai;
    Clip c;
    JComboBox playlist;
    JButton play, loop, stop, open;
    JFrame f;
    String dest, str;
    JTextField tf;
    URL u;
    File file;

    MusicPlayer() {
        f = new JFrame("Music Player");
        f.setLayout(null);
        f.setSize(620, 300);
        f.setVisible(true);
        tf = new JTextField();
        tf.setBounds(25, 50, 565, 40);
        tf.setFont(new Font("Monotype Corsiva", Font.BOLD, 20));
        f.add(tf);
        tf.setHorizontalAlignment(JTextField.RIGHT);
        play = new JButton("play");
        play.setBounds(100, 150, 120, 30);
        play.addActionListener(this);
        f.add(play);
        loop = new JButton("loop");
        loop.setBounds(300, 150, 120, 30);
        loop.addActionListener(this);
        f.add(loop);
        stop = new JButton("stop");
        stop.setBounds(450, 150, 120, 30);
        stop.addActionListener(this);
        f.add(stop);
        open = new JButton("open");
        open.setBounds(100, 200, 420, 30);
        open.addActionListener(this);
        f.add(open);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void actionPerformed(ActionEvent ae) {
        String dest;

        if (ae.getActionCommand().equals("open")) {
            FileDialog fd = new FileDialog(f, "Open Box", FileDialog.LOAD);
            fd.setSize(300, 300);
            fd.setVisible(true);
            String s1 = "wav";
            String sng = fd.getFile();
            dest = fd.getDirectory() + fd.getFile();
            if (sng.toLowerCase().endsWith(s1)) {
                tf.setText(sng);
                file = new File(dest);
            } else {
                JOptionPane.showMessageDialog(f, "Select a valid file format");
            }
            try {
                c = AudioSystem.getClip();
                file = new File(dest);
                ai = AudioSystem.getAudioInputStream(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (ae.getActionCommand().equals("play")) {
            try {
                ai = AudioSystem.getAudioInputStream(file);
                c.close();
                c = AudioSystem.getClip();
                c.open(ai);
                c.start();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (ae.getActionCommand().equals("loop")) {
            try {
                ai = AudioSystem.getAudioInputStream(file);
                c.close();
                c = AudioSystem.getClip();
                c.open(ai);
                c.loop(Clip.LOOP_CONTINUOUSLY);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (ae.getActionCommand().equals("stop")) {
            c.stop();
            c.close();

        }
    }

    public static void main(String args[]) {
        new MusicPlayer();
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-03-09 05:01:56

默认情况下,不提供MP3实现。如果您没有MP3 SPI的实现,UnsupportedAudioFileException将被抛出。试试this plugin,它应该可以工作了!

此外,this article相当不错,它提供了详细的入门说明。

票数 2
EN

Stack Overflow用户

发布于 2013-03-09 04:13:31

如果您使用的是Java7,可以使用内置的MediaMediaPlayer类来播放MP3s。

有关更多详细信息,请查看Playing .mp3 and .wav in Java?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15301488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档