如何使用JavaFX播放本地音乐?

如何使用JavaFX播放本地音乐?,第1张

public void play(String Filename)

{

try{

// 用输入流打开一音频文件

InputStream in = new FileInputStream(Filename)//FIlename 是你加载的声音文件如(“game.wav”)

// 从输入流中创建一个AudioStream对象

AudioStream as = new AudioStream(in)

AudioPlayer.player.start(as)//用静态成员player.start播放音乐

//AudioPlayer.player.stop(as)//关闭音乐播放

//如果要实现循环播放,则用下面的三句取代上面的“AudioPlayer.player.start(as)”这句

/*AudioData data = as.getData()

ContinuousAudioDataStream gg= new ContinuousAudioDataStream (data)

AudioPlayer.player.start(gg)// Play audio.

*/

//如果要用一个 URL 做为声音流的源(source),则用下面的代码所示替换输入流来创建声音流:

/*AudioStream as = new AudioStream (url.openStream())

*/

} catch(FileNotFoundException e){

System.out.print("FileNotFoundException ")

} catch(IOException e){

System.out.print("有错误!")

}

}

javafx音频频谱数据绑定动画的方法:

添加import static java.lang.Math.random,到import语句列表中,就可以绑定动画了。

动画由时间轴驱动,因此此代码创建时间轴,然后使用for循环向30个圆中的每一个添加两个关键帧。0秒处的第一个关键帧使用属性translateXProperty并translateYProperty在窗口内设置圆圈的随机位置。40秒的第二个关键帧也是如此。

因此,当播放时间线时,它在40秒的时间段内将所有圆圈从一个随机位置动画到另一个随机位置。

注意javafx的动画需要设置路径和节点进行绑定,但如果路径的属性绑定在设置路径之前,就会使得该路径的属性被设置成绑定属性的初始值。

采用JavaFX组件完成的一款小巧、界面精美的本地音乐播放器,支持(拖动 or 文件选择器)添加本地音乐。

歌曲以及删除它们、具有歌词文件解析、三种播放模式选择、歌词滚动、歌单列表控制、频谱图展示、歌词海报显示、自定义背景、系统托盘控制、一些快捷键等。同时使用.ini文件记录应用设置信息,数据库用sqlite。

主要功能清单:

支持系统托盘控制和全屏控制。

界面简洁而精美且支持自定义背景。

支持播放的音乐格式:mp3 文件、wav 文件、aac 文件。

支持解析歌词并展示。

支持解析歌词文件(缩略图、专辑、时长等)。

支持频谱图动效。

支持拖动添加文件。

支持歌单列表控制。

你使用了过时的类调用了过时的方法. 已经不被推荐使用, 所以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()) {} //这样写更简洁

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11511250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存