zoukankan      html  css  js  c++  java
  • 音频播放的三种方式:

    第一种方式:不带面板:

    /**
     * 
     */
    package com.niit.hitmouse;
    
    import java.io.File;
    import java.io.IOException;
    
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
    import javax.sound.sampled.UnsupportedAudioFileException;
    
    /**
     * @author: Annie
     * @date:2016年6月3日
     * @description:
     */
    public class PlayMusic {
    
        public PlayMusic(String url) throws Exception{
            //给界面添加音乐
            File file = new File(url);//url为你音乐的路径
            AudioInputStream auIn = AudioSystem.getAudioInputStream(file);
            Clip clip = (Clip)AudioSystem.getClip();
            clip.open(auIn);
            clip.start();
            while(clip.available() > 0)
            {
                Thread.sleep(1000);
            }
            clip.close();
        }
        
    }

    第二种方式:带面板,可控制的

    package com.niit.innerclass;
    
    import java.applet.Applet;
    import java.applet.AudioClip;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URI;
    import java.net.URL;
    
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JMenuItem;
    
    /**
     * @author: Annie
     * @date:2016年6月3日
     * @description:音乐播放器
     */
    public class MusicDemo extends JDialog implements ActionListener,ItemListener,Runnable{
    
        JButton btn_play,btn_stop,btn_loop;
        JComboBox musicCombox;
        AudioClip clip;
        Thread thead;
        String str;
    
    
        public MusicDemo() {
            setSize(350, 200);
            setLayout(new FlowLayout());
            musicCombox = new JComboBox();
            musicCombox.addItem("选择音频文件");
            musicCombox.addItem("./src/梦中的婚礼.wav");
            musicCombox.addItem("./src/打击地鼠.wav");
            btn_play = new JButton("播放");
            btn_stop = new JButton("停止");
            btn_loop = new JButton("循环");
            thead  = new Thread(this);
    
    
    
    
            add(musicCombox);
            add(btn_play);
            add(btn_stop);
            add(btn_loop);
    
            musicCombox.addItemListener(this);
            btn_play.addActionListener(this);
            btn_stop.addActionListener(this);
            btn_loop.addActionListener(this);
    
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            setVisible(true);
    
        }
    
        public static void main(String[] args) {
            new MusicDemo();
    
        }
    
    
        public void run() {
            System.out.println("run方法进来了");
            try {
                File file = new File(str);//创建一个file对象
                URI uri = file.toURI();//创建一个URI对象
                URL url = uri.toURL();//创建一个URL对象
                clip = Applet.newAudioClip(url);//创建一个音频对象
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
    
        }
    
    
        @Override
        public void itemStateChanged(ItemEvent e) {
            System.out.println("itemStateChanged方法进来了");
            str = musicCombox.getSelectedItem().toString();
            System.out.println("----------str:"+str);
            if(!(thead.isAlive())){
                thead = new Thread(this);
            }
            try{
                thead.start();
            }catch(Exception ee){
    
            }
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("actionPerformed方法进来了");
            if(e.getSource() == btn_play){
                clip.play();
            }else if(e.getSource() == btn_stop){
                clip.stop();
            }else if(e.getSource() == btn_loop){
                clip.loop();
            }
        }
    
    }

    效果图:

    第三种方式:

    package com.niit.innerclass;
    
    /**
     * @author: Annie
     * @date:2016年6月3日
     * @description:
     */
    
    import java.io.File;
    import java.io.IOException;
    
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.DataLine;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.UnsupportedAudioFileException;
    
    public class Play{
        private String file_path="./src/梦中婚礼.wav";
        private AudioInputStream    ais; 
        private SourceDataLine      line; 
        private AudioFormat         baseFormat;
        private static final int    BUFFER_SIZE=4000*4;
    
        private SourceDataLine getLine(AudioFormat audioFormat) {
            SourceDataLine res = null;
            DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);
            try {
                res = (SourceDataLine) AudioSystem.getLine(info);
                res.open(audioFormat);
            }catch (Exception e) {
                e.printStackTrace();
            }
            return res;
        }
    
        private void play()throws UnsupportedAudioFileException, LineUnavailableException, IOException{
            ais= AudioSystem.getAudioInputStream(new File(file_path));
            baseFormat = ais.getFormat();
    
            line = getLine(baseFormat);
            line.start();
            int inBytes = 0;
            byte[] audioData=new byte[BUFFER_SIZE];    
            while (inBytes != -1){
                inBytes = ais.read(audioData, 0, BUFFER_SIZE);
                if (inBytes >= 0) {
                    int outBytes = line.write(audioData, 0, inBytes);
                }
            }
        }
        public static void main(String args[])throws UnsupportedAudioFileException, LineUnavailableException, IOException
        {
            Play p1=new Play();
            p1.play();
        }
    }
  • 相关阅读:
    JS跨域访问CORS配置
    在Maven中混用Java和Scala
    Linux下开源可视化工具Caravel安装(包含缺少js解决办法)
    linux环境下NPM安装小结(淘宝镜像)
    Spark学习笔记
    导出HBase数据到Excel(Java代码)
    Spark通过JdbcRdd连接Oracle数据库(scala)
    基于AngularJS+Bootstrap的多文件上传与管理
    Hadoop-1.2.1 安装步骤小结(ubuntu)
    git-remote-https.exe 无法找到入口
  • 原文地址:https://www.cnblogs.com/wangmingxia/p/5556785.html
Copyright © 2011-2022 走看看