java写的音频播放器(JAVA播放器)

发布时间:2022-11-14

本文目录一览:

  1. 如何用java做一个音乐播放器?
  2. 求用java编写MP3播放器
  3. 怎么用Java写一个简单的mp3播放器,用外部包
  4. 如何用Java来编写一个音乐播放器

如何用java做一个音乐播放器?

看看其它网友的答案: 首先下载播放mp3的包,比如mp3spi1.9.4.jar。在工程中添加这个包。 播放器演示代码如下

package com.test.audio;
import java.io.File;
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.List;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
public class MusicPlayer extends Frame {
    private static final long serialVersionUID = -2605658046194599045L;
    boolean isStop = true;// 控制播放线程
    boolean hasStop = true;// 播放线程状态
    String filepath;// 播放文件目录
    String filename;// 播放文件名称
    AudioInputStream audioInputStream;// 文件流
    AudioFormat audioFormat;// 文件格式
    SourceDataLine sourceDataLine;// 输出设备
    List list;// 文件列表
    Label labelfilepath;//播放目录显示标签
    Label labelfilename;//播放文件显示标签
    public MusicPlayer() {
        // 设置窗体属性
        setLayout(new BorderLayout());
        setTitle("MP3 Music Player");
        setSize(350, 370);
        // 建立菜单栏
        MenuBar menubar = new MenuBar();
        Menu menufile = new Menu("File");
        MenuItem menuopen = new MenuItem("Open", new MenuShortcut(KeyEvent.VK_O));
        menufile.add(menuopen);
        menufile.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                open();
            }
        });
        menubar.add(menufile);
        setMenuBar(menubar);
        // 文件列表
        list = new List(10);
        list.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                // 双击时处理
                if (e.getClickCount() == 2) {
                    // 播放选中的文件
                    filename = list.getSelectedItem();
                    play();
                }
            }
        });
        add(list, "Center");
        // 信息显示
        Panel panel = new Panel(new GridLayout(2, 1));
        labelfilepath = new Label("Dir:");
        labelfilename = new Label("File:");
        panel.add(labelfilepath);
        panel.add(labelfilename);
        add(panel, "North");
        // 注册窗体关闭事件
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        setVisible(true);
    }
    // 打开
    private void open() {
        FileDialog dialog = new FileDialog(this, "Open", 0);
        dialog.setVisible(true);
        filepath = dialog.getDirectory();
        if (filepath != null) {
            labelfilepath.setText("Dir:" + filepath);
            // 显示文件列表
            list.removeAll();
            File filedir = new File(filepath);
            File[] filelist = filedir.listFiles();
            for (File file : filelist) {
                String filename = file.getName().toLowerCase();
                if (filename.endsWith(".mp3") || filename.endsWith(".wav")) {
                    list.add(filename);
                }
            }
        }
    }
    // 播放
    private void play() {
        try {
            isStop = true;// 停止播放线程
            // 等待播放线程停止
            System.out.print("Start:" + filename);
            while (!hasStop) {
                System.out.print(".");
                try {
                    Thread.sleep(10);
                } catch (Exception e) {
                }
            }
            System.out.println("");
            File file = new File(filepath + filename);
            labelfilename.setText("Playing:" + filename);
            // 取得文件输入流
            audioInputStream = AudioSystem.getAudioInputStream(file);
            audioFormat = audioInputStream.getFormat();
            // 转换mp3文件编码
            if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
                audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                        audioFormat.getSampleRate(), 16, audioFormat
                        .getChannels(), audioFormat.getChannels() * 2,
                        audioFormat.getSampleRate(), false);
                audioInputStream = AudioSystem.getAudioInputStream(audioFormat,
                        audioInputStream);
            }
            // 打开输出设备
            DataLine.Info dataLineInfo = new DataLine.Info(
                    SourceDataLine.class, audioFormat,
                    AudioSystem.NOT_SPECIFIED);
            sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo);
            sourceDataLine.open(audioFormat);
            sourceDataLine.start();
            // 创建独立线程进行播放
            isStop = false;
            Thread playThread = new Thread(new PlayThread());
            playThread.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    class PlayThread extends Thread {
        byte tempBuffer[] = new byte[320];
        public void run() {
            try {
                int cnt;
                hasStop = false;
                // 读取数据到缓存数据
                while ((cnt = audioInputStream.read(tempBuffer, 0,
                        tempBuffer.length)) != -1) {
                    if (isStop)
                        break;
                    if (cnt > 0) {
                        // 写入缓存数据
                        sourceDataLine.write(tempBuffer, 0, cnt);
                    }
                }
                // Block等待临时数据被输出为空
                sourceDataLine.drain();
                sourceDataLine.close();
                hasStop = true;
            } catch (Exception e) {
                e.printStackTrace();
                System.exit(0);
            }
        }
    }
    public static void main(String args[]) {
        new MusicPlayer();
    }
}

求用java编写MP3播放器

这个需要jmf的相关包,去网上下载下,给你写了个例子

public class TestPlay extends JFrame {
    private Component vc, cc;
    private JButton file = new JButton("file");
    private Player player = null;
    public TestPlay() throws HeadlessException, NoPlayerException, MalformedURLException, IOException {
        this.add(file);
        file.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                JFileChooser f = new JFileChooser();
                if(f.showOpenDialog(null)==JFileChooser.CANCEL_OPTION)return;
                try {
                    player = Manager.createPlayer(f.getSelectedFile().toURL());
                    player.addControllerListener(new ControllerListener() {
                        public void controllerUpdate(ControllerEvent arg0) {
                            controllerUpdateImp(arg0);
                        }
                    });
                    player.prefetch();
                } catch (Exception e) {
                    System.out.println(e);
                    JOptionPane.showMessageDialog(null, e.getMessage());
                }
            }
        });
    }
    public void controllerUpdateImp(ControllerEvent e) {
        if (e instanceof EndOfMediaEvent) {
            player.setMediaTime(new Time(0));
            player.start();
        } else if (e instanceof PrefetchCompleteEvent) {
            player.start();
        } else if (e instanceof RealizeCompleteEvent) {
            vc = player.getVisualComponent();
            if (vc != null) this.add(vc, BorderLayout.CENTER);
            cc = player.getControlPanelComponent();
            if (cc != null) this.add(cc, BorderLayout.SOUTH);
            this.pack();
            this.setResizable(false);
            this.setVisible(true);
        } else if (e instanceof ControllerClosedEvent) {
            System.exit(0);
        }
    }
    public static void main(String[] args) {
        TestPlay t;
        try {
            t = new TestPlay();
            t.setDefaultCloseOperation(t.EXIT_ON_CLOSE);
            t.pack();
            t.setLocationRelativeTo(null);
            t.setVisible(true);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
}

怎么用Java写一个简单的mp3播放器,用外部包

作业其实还是自己写的好。要用到JMF包啊,到网上下载一个JMF包,照着说明安装上。 以下是我写的一个很简单的播放器,只能播放mp3,mpeg,mpg,wav等简单的格式。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.MediaLocator;
import javax.media.RealizeCompleteEvent;
import javax.media.bean.playerbean.MediaPlayer;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JList;
import java.awt.BorderLayout;
import javax.swing.JSplitPane;
import java.awt.Component;
import java.util.Vector;
public class JMF_T extends JFrame implements ControllerListener, ActionListener {
    MediaPlayer Player;
    private String filename = "";
    private static final long serialVersionUID = 1L;
    private Vector vct = new Vector(); // @jve:decl-index=0:
    private JPanel jContentPane = null;
    private JSplitPane jSplitPane = null;
    private JPanel playPanel = null;
    private JList jList = null;
    private JSplitPane getJSplitPane() {
        if (jSplitPane == null) {
            jSplitPane = new JSplitPane();
            jSplitPane.setDividerSize(5);
            jSplitPane.setResizeWeight(0.8);
            jSplitPane.setRightComponent(getJList());
            jSplitPane.setLeftComponent(getPlayPanel());
        }
        return jSplitPane;
    }
    private JPanel getPlayPanel() {
        if (playPanel == null) {
            playPanel = new JPanel();
            playPanel.setLayout(new BorderLayout());
        }
        return playPanel;
    }
    private JList getJList() {
        if (jList == null) {
            jList = new JList();
            jList.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent e) {
                    // TODO Auto-generated Event stub mouseClicked()
                    if (e.getClickCount() == 1) {
                        String str = (String) jList.getSelectedValue();
                        if (str == null) {
                            return;
                        }
                        filename = str;
                        System.out.println(str);
                    }
                    if (e.getClickCount() == 2) {
                        String str = (String) jList.getSelectedValue();
                        if (str == null) {
                            return;
                        }
                        filename = str;
                        play();
                    }
                }
            });
        }
        return jList;
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JMF_T thisClass = new JMF_T();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }
    public JMF_T() {
        initialize();
    }
    private void OpenFile() {
        FileDialog fd = new FileDialog(this, "Choose Video", FileDialog.LOAD);
        fd.setVisible(true);
        filename = fd.getDirectory() + fd.getFile();
        System.out.println(filename);
        if (filename.equals("")) {
            return;
        } else if (filename.equals("nullnull")) {
            return;
        }
        boolean j = false;
        for (int i = 0; i < vct.size(); i++) {
            if (vct.get(i).toString().equals(filename)) {
                j = true;
                break;
            }
        }
        if (j == false) {
            vct.add(filename);
            jList.setListData(vct);
        }
    }
    private void stop() {
        if (Player != null) {
            Player.stop();
            Player.deallocate();
        }
    }
    private void play() {
        try {
            if (filename.equals("")) {
                return;
            }
            if (Player == null) {
                Player = new MediaPlayer();
            } else {
                closePreviosPlayer();
            }
            Player.setMediaLocator(new MediaLocator("" + filename));
            Player.addControllerListener(this);
            Player.realize();
            Player.start();
        } catch (Exception e) {
        }
    }
    public void actionPerformed(ActionEvent e) {
        String action = e.getActionCommand().toString();
        if (action.equals("Open")) {
            OpenFile();
        }
        if (action.equals("Play")) {
            play();
        }
        if (action.equals("Stop")) {
            stop();
        }
        if (action.equals("Exit")) {
            dispose();
            System.exit(0);
        }
    }
    private void initialize() {
        this.setSize(500, 350);
        setLocation(300, 100);
        this.setContentPane(getJContentPane());
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                dispose();
                System.exit(0);
            }
        });
        MenuBar mb = new MenuBar();
        setMenuBar(mb);
        Menu fileMenu = new Menu("File");
        Menu actMenu = new Menu("Action");
        mb.add(fileMenu);
        mb.add(actMenu);
        MenuItem itemOpen = new MenuItem("Open");
        itemOpen.addActionListener(this);
        fileMenu.add(itemOpen);
        fileMenu.addSeparator();
        MenuItem itemPlay = new MenuItem("Play");
        itemPlay.addActionListener(this);
        actMenu.add(itemPlay);
        actMenu.addSeparator();
        MenuItem itemStop = new MenuItem("Stop");
        itemStop.addActionListener(this);
        actMenu.add(itemStop);
        MenuItem itemExit = new MenuItem("Exit");
        itemExit.addActionListener(this);
        fileMenu.add(itemExit);
        this.validate();
        this.setVisible(true);
    }
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getJSplitPane(), BorderLayout.CENTER);
        }
        return jContentPane;
    }
    private void closePreviosPlayer() {
        if (Player == null)
            return;
        Player.stop();
        Player.deallocate(); // 停止播放并且重新装载DateSource
        Component visual = Player.getVisualComponent();
        Component control = Player.getControlPanelComponent();
        if (visual != null) {
            playPanel.remove(visual);
        }
        if (control != null) {
            playPanel.remove(control);
        }
    }
    public synchronized void controllerUpdate(ControllerEvent event) {
        if (event instanceof RealizeCompleteEvent) {
            Component comp;
            if ((comp = Player.getControlPanelComponent()) != null) {
                playPanel.add("South", comp);
            } else {
                closePreviosPlayer();
            }
            if ((comp = Player.getVisualComponent()) != null) {
                playPanel.add("Center", comp);
            }
            validate();
        }
    }
}

如何用Java来编写一个音乐播放器

首先要在环境电脑中安装下JMF环境,才能引入javax.sound.sampled.*这个包,一下是用过的代码

package TheMusic;
import java.io.*;
import javax.sound.sampled.*;
public class Music {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //修改你的音乐文件路径就OK了
        AePlayWave apw=new AePlayWave("突然好想你.wav");
        apw.start();
    }
}

在程序中实例化这个类,启动线程,实例化的时候参照Test修改路径就OK播放声音的类

public class AePlayWave extends Thread {
    private String filename;
    public AePlayWave(String wavfile) {
        filename = wavfile;
    }
    public void run() {
        File soundFile = new File(filename);
        AudioInputStream audioInputStream = null;
        try {
            audioInputStream = AudioSystem.getAudioInputStream(soundFile);
        } catch (Exception e1) {
            e1.printStackTrace();
            return;
        }
        AudioFormat format = audioInputStream.getFormat();
        SourceDataLine auline = null;
        DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
        try {
            auline = (SourceDataLine) AudioSystem.getLine(info);
            auline.open(format);
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
        auline.start();
        int nBytesRead = 0;
        byte[] abData = new byte[512];
        try {
            while (nBytesRead != -1) {
                nBytesRead = audioInputStream.read(abData, 0, abData.length);
                if (nBytesRead >= 0)
                    auline.write(abData, 0, nBytesRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        } finally {
            auline.drain();
            auline.close();
        }
    }
}