分页: 1 / 16

[分享]JAVA版音乐播放器YOYOPlayer1.1

发表于 : 2007-12-17 10:37
hadeslee
从最初的写第一个简单的Netbeans音乐插件,到现在的YOYOPlayer,中间经历了一些时间.感谢我的女朋友对我的帮助,所以此播放器取名为 YOYOPlayer,因为YOYO是她的名字,这个播放器的所有界面的图片也都是她做的.她刚刚学会PS,所以界面方面可能还不太完美,但至少也是一个尝试了,欢迎大家试用,并提出宝贵意见.
YOYOPlayer的主要用处还是在linux下的使用,虽然我大部份时间是在windows下面编写的,因为WINDOWS下的音乐播放软件已经很完美了,只不过用JAVA写的比较少而已,并且这个版本是完全的JAVA的版本,只要电脑装了JAVA就可以跑了,不需要再另外下载JMF的框架了,因为没有用到JMF里面的东西.在LINUX下面播放器好像都不太好用,特别是播放音乐的,要么就会出现乱码的问题,要么就会没有歌词同步的功能,而 YOYOPlayer经过我在ubuntu7.10下面的初步测试,并没有发现乱码问题,因为我默认是使用GBK的编码读取标签的,而LINUX默认的编码是UTF-8.
使用提示:
电脑上需装了JAVA运行环境,JRE,因为我是在JDK6.0下面编码的,并且用到了JDK6.0的新特性,所以要求运行环境也是JRE6.0.

目前能实现的功能有:
1,自动保存当前配置。
可以新建多个播放列表,每一个播放列表都可以单独保存,也可以全部保存,在关闭YOYOPlayer的时候,会自动保存当前的配置和设置,在并在下一次开启的时候,自动读取最后一次的配置
2,同步显示歌词功能。
在打开一首歌的时候,会按如下步骤查找歌词,先是取歌曲的ID3V1标签内容查找本地,如果没有查到,就取歌曲的文件名查找本地文件,如果还没有查到,就按以上顺序,先用标签再用歌曲的文件名去网格上搜索。在这里要说明的是,很多ID3V1的标签是不合法的,里面很多广告信息,所以可以自己手工编辑一下 ID3V1的内容。这样就可以更方便地搜索到歌词了。存放歌词的文件夹目前是硬编码在用户的目录下,也就是user.home这个属性的目录的 Lyrics文件夹下面。比如C:\Documents and Settings\hadeslee\Lyrics,如果预先有歌词的话,可以把歌词的LRC文件拷到该文件夹下面,以免每首歌都去网络上查找。一般千千静听的用户歌词都是保存在C:\Program Files\TTPlayer\Lyrics目录下的,所以可以预先把这里面的LRC文件拷到程序所使用的文件夹里面去。如果本地没有找到歌曲,则会去网络上搜索,当有匹配的歌词以后,会自动下载并保存在user.home/Lyrics文件夹下面,这样下次放同一首歌就不用去网络上搜索了。所以为了提高搜索歌词的准确率,请规范命名MP3文件或者编辑ID3V1标签。
3,ID3V1标签编辑。
在播放列表里面对着选中的歌曲点右键就可以选择“歌曲信息”来编辑ID3V1标签,有一点需要注意的是,不能编辑正在播放的歌曲,因为正在使用的文件保存不了,不知道千千静听是怎么实现的,反正我这里写入的时候会抛出一个IOException异常,提示我另一进程正在使用该文件,不知道各位有没有什么好办法,可以在文件使用的时候更改它。
4,歌曲进度。
歌曲进度可以由两个地方来控制,一个是拖动进度条,还有一个很好的地方是在歌词显示窗口,在歌词显示窗口,当把鼠标移上面,鼠标变成了手形就说明歌词是可以拖动的,按住鼠标左键不放左右拖动就可以了,这样可以根据歌词来拖动进度,确实是挺方便的。当歌词显示是水平显示的时候,可以左右拖动,是垂直显示的时候,可以上下拖动.默认是垂直显示,当然也可以改为水平显示歌词秀.
5,校正歌词进度。
在歌词显示的时候可以把鼠标放到歌词显示窗口滑动鼠标的滚轮,上下滑动以整体移动歌词。比如有些歌词会整体快几秒或者慢几秒,用这种方法校正就很方便了,不过不像千千静听一样会保存。只是内存里面改了而已,歌词文件并没有改:(

6,拖放。
如果没有搜索到匹配的歌词,而电脑里面有歌词,可以把LRC歌词文件直接拖到歌词显示窗口,如果LRC是合法的文件的话,会立即显示你拖进去的歌词文件。同样,可以把文件或者文件夹直接拖放到播放列表上,文件夹的拖放只遍历一层,不会递归遍历(为了效率:))。

7,拖放排序播放列表
对播放列表的排序以前只能用鼠标点中某一首歌,然后点右键,选择上移一格或者下移一格,现在可以直接选中歌曲,直接拖动
就可以完成排序功能了,并且还增加了播放列表中查找某首歌曲的功能.更多功能可以对着播放列表点击右键来慢慢尝试.:)

8,调音器
可以对音乐的十个频段进行调整,调出自己喜欢的音乐风格.当然也可以使用默认的,也可以选用预置的一些音乐效果.

9,可以播放本地歌曲,也可以播放网络歌曲.只要添加网络歌曲的网址就可以实现在线播放了.


最小化的时候,默认是最小化到托盘区去了,双击托盘区或者点击右键就可以调出主界面了.
提示:为了搞高歌词搜索的正确率,请点击歌曲文件查看其属性,看文件的标签是否合法,或者文件名的命名是否规范.

程序运行截图如下:
图片

请点击这里下载YOYOPlayer1.1可执行文件

[/url]

发表于 : 2007-12-17 10:40
bones7456
支持原创~ :lol:

发表于 : 2007-12-17 10:44
hadeslee
大家试用一下啊,用UBUNTU的兄弟姐妹们 :D

发表于 : 2007-12-17 10:50
xu_gong
能不能请楼主给龙芯电脑编译一个?

发表于 : 2007-12-17 10:59
hadeslee
龙芯电脑?

不需要额外吧,只要你的电脑能装JAVA就可以了,装了JAVA就可以运行了

发表于 : 2007-12-17 11:25
zhangsong023
我这里mp3中文乱码,应该是utf8编码的。

还有播放时没有声音,开始播放时会抛NullPointerException。

歌词同步做得很完美。

发表于 : 2007-12-17 11:26
jms212
支持楼主

发表于 : 2007-12-17 11:27
xep007
从功能上来说应该是LINUX上最好的音乐播放器了。不知支持64位的JAVA吗?

发表于 : 2007-12-17 11:47
hadeslee
zhangsong023 写了:我这里mp3中文乱码,应该是utf8编码的。

还有播放时没有声音,开始播放时会抛NullPointerException。

歌词同步做得很完美。
能把你的异常信息帖上来看一下吗?
还有,是一直都没有声音还是一开始没有声音?
能帖上来调试信息吗?我特意没有关掉LOG

发表于 : 2007-12-17 11:57
zhangsong023
晕,现在又没抛异常了,不过还是没声音,是一直没声音。

特意试了一下audacious,一切正常。

代码: 全选

2007-12-17 11:57:55 com.hadeslee.yoyoplayer.util.Config load
信息: 配置加载成功!!
2007-12-17 11:57:57 com.hadeslee.yoyoplayer.player.ui.PlayerUI loadPlaylist
信息: lastPlay=/home/*******/Desktop/倾国倾城.mp3
2007-12-17 11:57:57 com.hadeslee.yoyoplayer.player.ui.PlayerUI loadPlaylist
信息: 找到了最后要播的匹配!!
2007-12-17 11:57:57 com.hadeslee.yoyoplayer.player.ui.PlayerUI setCurrentSong
信息: 调用了setCurrentSong()Thread[AWT-EventQueue-0,6,main]
2007-12-17 11:57:57 com.hadeslee.yoyoplayer.lyric.Lyric <init>
信息: 传进来的歌名是:熊汝霖和阿宝 - 倾国倾城
2007-12-17 11:57:57 com.hadeslee.yoyoplayer.lyric.Lyric init
信息: 找到的是:null
进来找歌词了
第一遍没有搜到,将第二次
第二次的I=200
第二次搜到了
下载到的歌词是:[ti:倾国倾城]
[ar:东来东往]
[al:回到我身边]
[by:wuyhui7715]
[offset:500]
[00:00.89]东来东往——倾国倾城 编辑:吴应辉
[00:22.89]
[00:24.89]难道非要爱到密不可分
[00:29.70]你才能感受到我火热的灵魂
[00:36.43]滚烫的双唇还留着你的吻
[02:32.61][00:49.00]常常想你想到人失了神
[02:37.36][00:54.03]我才能明白爱是如此的动人
[02:44.18][01:00.85]关不住心门 想要向你飞奔
[02:50.24][02:50.53]对爱我还是一样的坚贞
[02:59.39][01:16.14]你说过 爱我愿意倾国倾城
[03:05.39][01:22.07]如今却让我的心布满了伤痕
[03:11.44][01:28.05]有多么的难舍 有多么的残忍
[03:17.59][01:34.34]你的心已不可能 再认真
[03:54.13][03:23.66][01:40.37]你说过 爱我愿意倾国倾城
[04:00.27][03:29.54][01:46.39]为什么总让我一个人痴痴等
[04:06.25][03:35.68][01:52.44]你背弃的眼神 你偷走的青春
[04:12.40][03:41.90][01:58.61]是真的伤人 我真的痛了
[02:10.61]东来东往——倾国倾城 编辑:吴应辉

2007-12-17 11:57:59 com.hadeslee.yoyoplayer.lyric.Lyric saveLyric
信息: 保存完毕,保存在:熊汝霖和阿宝 - 倾国倾城.lrc
2007-12-17 11:58:11 com.hadeslee.yoyoplayer.player.ui.PlayerUI processPlay
信息: processPlay....... 
开始播放了
2007-12-17 11:59:58 com.hadeslee.yoyoplayer.util.Config save
信息: 配置保存成功!!
从log上看来,好像没什么问题,寒。
java 1.6.0_03。

发表于 : 2007-12-17 12:09
zhangsong023
对不起,有可能是我自己的问题,现在可以了。

浪费您时间,表示歉意。

问题来得莫名其妙,去得也同样莫名其妙,现在不抛异常了,声音也有了,但最开始确实抛了NollPointer异常,不过那个终端被我关掉了,已经没有办法reproduce了,非常抱歉。

发表于 : 2007-12-17 12:26
内存不足
试了一下子 第一次开不能做动作 关掉再开就好了

加精支持原创 希望可以更完善

发表于 : 2007-12-17 12:26
ieasylive
从界面上看就让我垂涎三尺了 :shock:

发表于 : 2007-12-17 12:39
xep007
能不能重新编译一下让它能支持64位的JAVA啊。

发表于 : 2007-12-17 12:43
内存不足
ID3如果是UTF-8的乱码 :D