该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-03
楼主,现在大概可以播放和暂停了.其他功能正在添加.我可能需要修改你的包中的代码.
界面是仿的google音乐的播放器. 如下图: ![]() |
|
返回顶楼 | |
发表时间:2010-09-03
最后修改:2010-09-04
整理了下现在的源代码.先传上来,做个备份
new: 加入了添加mp3的功能 加入了配置文件的读取 现在可以播放上一个,下一个了,并且不会因此而死锁了
todo: 暂时自己写了个tag读取方法显示mp3部分信息。以后会改成使用jmp中的ID3Tag显示详细信息。 写入分组和歌曲信息到配置文件中 播放顺序:循环,随机和重复 歌曲进度信息 音量管理? 同步歌词?? and so on...
|
|
返回顶楼 | |
发表时间:2010-09-04
东西挺好的,希望坚持下去。别中断了。
|
|
返回顶楼 | |
发表时间:2010-09-04
i2534 写道 楼主,现在获得tag需要修改源代码了.
已经修改了,应该再没的啥问题了吧。修改了几处,新的jar包已经上传到http://jmp123.sf.net/。 |
|
返回顶楼 | |
发表时间:2010-09-04
i2534 写道 楼主,现在获得tag需要修改源代码了.
随便DIY 94 了,Header.java中通过解析VBR能得到VBR/ABR压缩编码的MP3文件的总帧数,CBR的还没写上去呢,自己添上去吧。 |
|
返回顶楼 | |
发表时间:2010-09-04
今天我又稍微改了下。现在可以添加删除分组,给分组添加删除歌曲,选择歌曲播放。但是播放顺序,保存读取分组信息这些基本功能还没有完成。我周一到周四比较忙。周五回公司全天有空。然后业余时间在找房子。住的房子马上到期,找了一个星期新房子,真TM贵。。。明抢啊。
|
|
返回顶楼 | |
发表时间:2010-09-04
最后修改:2010-09-10
对播放线程做了封装,感觉比较满意。发上来让大家拍砖。
思路就是对线程的阻塞和中断。在jmp那个播放线程了修改。 改了多次,实验了多次,终于有了这个版本。 线程真是不好玩,还是出现了问题。 终于遇到一次死锁了,哈哈。 解决很简单,再加一个标志死亡的锁存器,在彻底死亡之前一直等待。 这里不贴代码了,代码见压缩包吧. |
|
返回顶楼 | |
发表时间:2010-09-10
楼主,我今天在写外壳的时候,发现自然播放完毕会出现.以下错误:
java.lang.ArrayIndexOutOfBoundsException: 2048 at jmp123.instream.BuffRandAcceFile.read(BuffRandAcceFile.java:103) at jmp123.decoder.Header.syncWord(Header.java:320) at jmp123.decoder.Header.syncSearch(Header.java:267) at jmp123.decoder.Header.syncFrame(Header.java:249) at jmp123.shell.ShellPlayer$1.run(ShellPlayer.java:71) 网络文件的播放我还没有测试. |
|
返回顶楼 | |
发表时间:2010-09-10
最后修改:2010-09-10
i2534 写道 楼主,我今天在写外壳的时候,发现自然播放完毕会出现.以下错误:
java.lang.ArrayIndexOutOfBoundsException: 2048 at jmp123.instream.BuffRandAcceFile.read(BuffRandAcceFile.java:103) at jmp123.decoder.Header.syncWord(Header.java:320) at jmp123.decoder.Header.syncSearch(Header.java:267) at jmp123.decoder.Header.syncFrame(Header.java:249) at jmp123.shell.ShellPlayer$1.run(ShellPlayer.java:71) 网络文件的播放我还没有测试. (1).是这样的,是文件读完时抛出的异常。很多方法没有返回值,在开始编程的阶段,主要精力放在解码器代码的优化上了,程序的流程是用抛出异常去处理的。 等有空的时候我把代码整理下,让一些方法带回返回值,根据返回值确定程序流程。 (2).GUI应该加入:快退、1--8倍速快进(可以选择是否回放监听)。功能调用很简单,直接调用静态方法。完成这些功能的方法正在编写代码和测试中,妥了就放出来~~ (3).不用写处理解码播放的线程,需要暂停时调用Audio(true)解码线程被阻塞;调用Audio(false)该线程继续执行。 |
|
返回顶楼 | |
发表时间:2010-09-10
lfp001 写道 i2534 写道 楼主,我今天在写外壳的时候,发现自然播放完毕会出现.以下错误:
java.lang.ArrayIndexOutOfBoundsException: 2048 at jmp123.instream.BuffRandAcceFile.read(BuffRandAcceFile.java:103) at jmp123.decoder.Header.syncWord(Header.java:320) at jmp123.decoder.Header.syncSearch(Header.java:267) at jmp123.decoder.Header.syncFrame(Header.java:249) at jmp123.shell.ShellPlayer$1.run(ShellPlayer.java:71) 网络文件的播放我还没有测试. 是这样的,是文件读完时抛出的异常。很多方法没有返回值,在开始编程的阶段,主要精力放在解码器代码的优化上了,程序的流程是用抛出异常去处理的。 等有空的时候我把代码整理下,让一些方法带回返回值,根据返回值确定程序流程。 另外,你不需要写一个处理解码播放的线程,暂停时调用Audio(true)解码线程被阻塞;调用Audio(false)该线程继续执行。 貌似我刚开始没写,直接用Audio(true)这种,但是这样只是阻塞了声音,while(true)循环会快速循环完毕.即线程没有阻塞. 本来我今天打算完成进度条控制和自动顺序播放的,结果下午和房东吵了一架.完全静不下心来写程序. 现在这个可以保存和读取播放列表. |
|
返回顶楼 | |