当前位置:编程学习 > JAVA >>

JAVA背景音乐

如何在JAVA窗体中添加背景音乐? --------------------编程问答-------------------- 背景音乐是说的玩的,还真有什么“背景”音乐吗?不就是显示窗口的时候同时播放音乐吗?给你一个播放本地音频文件的示例

import java.io.*;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;

public class PlayMusic {
    static volatile boolean stop=false;
    public static void main(String[] args) {
        //播放当前目录中的3.wav
        PlayMusic.Play("3.wav");
    }

    //播放音频文件
    public static void Play(String fileurl) {

        try {
            AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
            AudioFormat aif = ais.getFormat();System.out.println(aif);
            final SourceDataLine sdl;
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);
            sdl = (SourceDataLine) AudioSystem.getLine(info);
            sdl.open(aif);
            sdl.start();
            FloatControl fc=(FloatControl)sdl.getControl(FloatControl.Type.MASTER_GAIN);
            //value可以用来设置音量,从0-2.0
            double value=2;
            float dB = (float)
                  (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);
            fc.setValue(dB);
            int nByte = 0;
            int writeByte = 0;
            final int SIZE=1024*64;
            byte[] buffer = new byte[SIZE];
            while (nByte != -1) {
                nByte = ais.read(buffer, 0, SIZE);
                sdl.write(buffer, 0, nByte);
            }
            sdl.stop();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
--------------------编程问答-------------------- 哇哦。。不错啊。 --------------------编程问答-------------------- 确实不错啊,鼓掌 --------------------编程问答-------------------- 这个都会,服了你了 --------------------编程问答--------------------
引用 1 楼 wenbodong 的回复:
背景音乐是说的玩的,还真有什么“背景”音乐吗?不就是显示窗口的时候同时播放音乐吗?给你一个播放本地音频文件的示例

Java code


import java.io.*;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.AudioInputStream;
import javax.sound.……

++ --------------------编程问答-------------------- 呵呵 一楼会告诉你 只有想不到的 没有做不到的  --------------------编程问答-------------------- 那我接着楼主的问:做一个计算器,点一下按钮1,就出现语音1,这个怎么搞 --------------------编程问答--------------------
引用 7 楼 hellousb2010 的回复:
那我接着楼主的问:做一个计算器,点一下按钮1,就出现语音1,这个怎么搞

楼上大哥,你不像是程序员,像是用户。我播放的示例都给你了,如何播放,什么时候播放,当然是你自己控制啊。点按钮播放,就在按钮的监听函数中写播放代码啊。而且,对于Java来说,控制声卡发声就是像SourceDateLine这个流写数据,即sdl.write(buffer, 0, nByte);这句。 --------------------编程问答-------------------- 哇。。。不错哦 --------------------编程问答-------------------- 怎样将音乐添加到当前目录下 --------------------编程问答-------------------- 大哥们 我把代码放到一个类中  当运行时怎么不放音乐啊  谢谢了 --------------------编程问答--------------------
引用 7 楼 hellousb2010 的回复:
那我接着楼主的问:做一个计算器,点一下按钮1,就出现语音1,这个怎么搞


使用 freetts

System.setProperty("freetts.voices" "de.dfki.lt.freetts.en.us.MbrolaVoiceDirectory");
Voice mbrola = VoiceManager.getInstance().getVoice("mbrola_us2");
mbrola.allocate();
mbrola.speak("1");
mbrola.deallocate();
--------------------编程问答--------------------
引用 1 楼 wenbodong 的回复:
背景音乐是说的玩的,还真有什么“背景”音乐吗?不就是显示窗口的时候同时播放音乐吗?给你一个播放本地音频文件的示例

import java.io.*;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;

public class PlayMusic {
    static volatile boolean stop=false;
    public static void main(String[] args) {
        //播放当前目录中的3.wav
        PlayMusic.Play("3.wav");
    }

    //播放音频文件
    public static void Play(String fileurl) {

        try {
            AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
            AudioFormat aif = ais.getFormat();System.out.println(aif);
            final SourceDataLine sdl;
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);
            sdl = (SourceDataLine) AudioSystem.getLine(info);
            sdl.open(aif);
            sdl.start();
            FloatControl fc=(FloatControl)sdl.getControl(FloatControl.Type.MASTER_GAIN);
            //value可以用来设置音量,从0-2.0
            double value=2;
            float dB = (float)
                  (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);
            fc.setValue(dB);
            int nByte = 0;
            int writeByte = 0;
            final int SIZE=1024*64;
            byte[] buffer = new byte[SIZE];
            while (nByte != -1) {
                nByte = ais.read(buffer, 0, SIZE);
                sdl.write(buffer, 0, nByte);
            }
            sdl.stop();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

有问题
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1170)
at gomoku.PlayMusic.Play(PlayMusic.java:21)
at gomoku.PlayMusic.main(PlayMusic.java:14)
怎么解决 --------------------编程问答--------------------
引用 13 楼 cxiyue 的回复:
Quote: 引用 1 楼 wenbodong 的回复:

背景音乐是说的玩的,还真有什么“背景”音乐吗?不就是显示窗口的时候同时播放音乐吗?给你一个播放本地音频文件的示例

import java.io.*;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;

public class PlayMusic {
    static volatile boolean stop=false;
    public static void main(String[] args) {
        //播放当前目录中的3.wav
        PlayMusic.Play("3.wav");
    }

    //播放音频文件
    public static void Play(String fileurl) {

        try {
            AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
            AudioFormat aif = ais.getFormat();System.out.println(aif);
            final SourceDataLine sdl;
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);
            sdl = (SourceDataLine) AudioSystem.getLine(info);
            sdl.open(aif);
            sdl.start();
            FloatControl fc=(FloatControl)sdl.getControl(FloatControl.Type.MASTER_GAIN);
            //value可以用来设置音量,从0-2.0
            double value=2;
            float dB = (float)
                  (Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);
            fc.setValue(dB);
            int nByte = 0;
            int writeByte = 0;
            final int SIZE=1024*64;
            byte[] buffer = new byte[SIZE];
            while (nByte != -1) {
                nByte = ais.read(buffer, 0, SIZE);
                sdl.write(buffer, 0, nByte);
            }
            sdl.stop();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

有问题
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1170)
at gomoku.PlayMusic.Play(PlayMusic.java:21)
at gomoku.PlayMusic.main(PlayMusic.java:14)
怎么解决

可能是的jar包版本不支持wav格式,你换个mp3格式的试试 --------------------编程问答-------------------- MP3格式的真心不行,求一个。mav格式的音频文件
--------------------编程问答-------------------- 确实挺不错的哦
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,