java代码中简单添加背景音乐(亲测有效)

在做java贪吃蛇游戏课设时,想添加背景音乐,用了以下很简单的步骤即可完成,亲测有效哦!

参考一位博主的做法(链接https://blog.csdn.net/weixin_43926171/article/details/90739074

调用方法:

1new Thread(()->{while(true) {Data.playMusic();} 2 }).start();// Lambda表达式 3// new Thread(new Runnable() { 4// 5// @Override 6// public void run() { 7// while (true) { 8// playMusic(); 9// } 10// } 11// }).start();// 开启一个线程用来播放音乐

方法体:

1import java.io.File; 2import javax.sound.sampled.AudioFormat; 3import javax.sound.sampled.AudioInputStream; 4import javax.sound.sampled.AudioSystem; 5import javax.sound.sampled.DataLine; 6import javax.sound.sampled.FloatControl; 7import javax.sound.sampled.SourceDataLine; 8static void playMusic() {// 背景音乐播放 9 try { 10 AudioInputStream ais = AudioSystem.getAudioInputStream(new File("D:/mysoft/eclipse/贪吃蛇/music.wav")); //绝对路径 11 AudioFormat aif = ais.getFormat(); 12 final SourceDataLine sdl; 13 DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif); 14 sdl = (SourceDataLine) AudioSystem.getLine(info); 15 sdl.open(aif); 16 sdl.start(); 17 FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN); 18 // value可以用来设置音量,从0-2.0 19 double value = 2; 20 float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0); 21 fc.setValue(dB); 22 int nByte = 0; 23 final int SIZE = 1024 * 64; 24 byte[] buffer = new byte[SIZE]; 25 while (nByte != -1) { 26 nByte = ais.read(buffer, 0, SIZE); 27 sdl.write(buffer, 0, nByte); 28 } 29 sdl.stop(); 30 31 } catch (Exception e) { 32 e.printStackTrace(); 33 } 34 }

注意事项:

若程序报错:
Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1189)
at com.ywq3.Test.main(Test.java:21)

       异常信息是说,不支持的格式,即该音频文件不支持,得不到该文件的输入流。我用的是wav格式,原来音频文件是mp3,转换成wav时直接改不行,就会报以上错误。明明是wav文件,却报错说不支持该格式,则可能是该wav文件内部格式有错误。安利一个格式转换网站:https://cn.office-converter.com/Convert-to-WAV。我是转换成正确的wav格式就可以播放音乐啦。此处参考了博客http://blog.csdn.net/qq_25827845/article/details/79026786

如果本文对您有帮助,可不可以给萌新点一个赞,鼓励小萌新坚持写博客的热情!

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Java爬虫之JSoup使用教程

title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin

P2P技术揭秘.P2P网络技术原理与典型系统开发

Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E