成都创新互联网站制作重庆分公司

java音乐代码大全 java音乐网站源码

我想把我的java小程序中嵌入一个背景音乐,写出添加背景音乐代码。

放音乐的api网上查有很多,比如灶穗拆javax.sound.midi.*;

创新互联科技有限公司专业互联网基础服务商,为您提供四川服务器托管高防物理服务器租用,成都IDC机房托管,成都主机托管等互联网服务。

支持midi,mid背景音乐的播放

public class Music implements MetaEventListener, Runnable{

private Sequence sequence = null;

private Sequencer sequencer;

private boolean isPlaying = false;

private volatile Thread thread;

public Music(){

}

public Music(String midifile){

try {

loadMidi(midifile);

} catch (IOException e) {

//族消 TODO Auto-generated catch block

e.printStackTrace();

} catch (InvalidMidiDataException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//导入midi文件到内存中传给Sequence对象,相当与编码器

public void loadMidi(String filename) throws IOException, InvalidMidiDataException{

sequence = MidiSystem.getSequence(this.getClass().getResourceAsStream(filename));

}

//隐枣播放方法

public void play(){

if(isPlaying){

return;

}

try {

sequencer = MidiSystem.getSequencer();

sequencer.open();

//用Sequencer对象把声音文件序列解码出来播放

sequencer.setSequence(sequence);

sequencer.addMetaEventListener(this);

//设置循环次数,-1表示一直循环

sequencer.setLoopCount(-1);

sequencer.setLoopStartPoint(0);

sequencer.setLoopEndPoint(sequencer.getTickLength());

} catch (MidiUnavailableException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvalidMidiDataException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(thread == null){

thread = new Thread(this);

thread.start();

}

}

public void stop(){

if(isPlaying){

sequencer.stop();

isPlaying = false;

}

if(thread != null){

thread = null;

}

}

public void meta(MetaMessage meta) {

if(meta.getType() == 47){

System.out.println("Sequencer is done playing");

}

// TODO Auto-generated method stub

}

public void run() {

// TODO Auto-generated method stub

Thread current = Thread.currentThread();

while(current == thread !isPlaying){

sequencer.start();

isPlaying = true;

try {

thread.sleep(1001);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

//用起来也很方便

public static void main(String[] args){

Music music = new Music("a.mid");

music.play();

}

}

如果这样写路径类要和音频文件放在一个目录下,如果你不想这样,有两种方法,一种是修改路径字符串,另一种是把Class.getResourceAsStream方法改成new FileInputStream 这两个方法加载资源的初始路径不同,前者找class文件所在目录,后者找project目录

急!!!求Java音频合成代码或方法。实现两个音频的合成,wav格式的就行。mp3更好。

import javax.sound.sampled.*;

import java.io.*;

/**

* @author Hardneedl

*/

class WavReader {

public static void main(String[] args) throws IOException, UnsupportedAudioFileException {

FileInputStream fin = new FileInputStream(args[0]);

AudioInputStream ain = AudioSystem.getAudioInputStream(fin);

AudioFormat format=ain.getFormat();

}

}

关于Java音乐播放的问题,出现下图的情况如何解决

你使用了过时的类调用了过时的方法. 已经不被推荐使用, 所以eclipse会划线提示.

以toURL() 为例 直接从File对象获得链接, 但是toURL方法,不会对特殊字符编码. 但是toURI方法会进行编码

所以现在一般的解决方弯橡案是 file.toURI().toURL();

解决办法:使用javafx.scene.media.AudioClip , 该类功能简单: 播放和停止声音 . 没有暂停, 时间长度,资料,均衡器等功能

参考代码

import java.io.File;

import javafx.scene.media.AudioClip; // 导包

public class TestAudioClip {

public static void main(String[] args) throws Exception {//抛出异常

AudioClip audioClip=new AudioClip(new File("D:\\宣传片音效.mp3").toURI().toURL().toString());

audioClip.play(0.8);//设置以80%的音量播放

// 设置一个循环,保证播放完悄闹庆了声音才退出程序

while(true) {

if(!audioClip.isPlaying()) {//如果停止了播放,就退出while循启握环

break;

}

}

//while(audioClip.isPlaying()) {} //这样写更简洁

}

}


当前文章:java音乐代码大全 java音乐网站源码
网站路径:http://cxhlcq.com/article/dspjpeg.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部