《Java MP3 ID3 Tag Library》在这里:https://sourceforge.net/projects/javamusictag/
利用该lib可以读取音乐文件的ID3V1,ID3V2等信息,包括歌手名,歌曲名,专辑名,歌词流(如果有的话)等,功能还比较强大。
我在使用的过程中发现该lib读取信息时会导致中文乱码,于是通过代码追踪,找到了两处new String的地方,指定了编码,解决了该问题。
但是在sourceforge.net上我没有该lib的cvs commit权限,所以修改后的jar我只能在这里给出,希望能帮助到有需要的人。
使用范例:
import java.io.IOException;
import org.farng.mp3.MP3File;
import org.farng.mp3.TagException;
import org.farng.mp3.id3.AbstractID3v2;
import org.farng.mp3.id3.ID3v1;
import org.farng.mp3.lyrics3.AbstractLyrics3;
public class TestMP3 {
/**
* @param args
*/
public static void main(String[] args) {
try {
//MP3File file = new MP3File("c:\\TDDOWNLOAD\\shuangjiegun.mp3");//1,2
MP3File file = new MP3File("c:\\TDDOWNLOAD\\1.mp3");//1,lyrics
// MP3File file = new MP3File("/home/zhubin/Music/1.mp3");//1,lyrics
AbstractID3v2 id3v2 = file.getID3v2Tag();
ID3v1 id3v1 = file.getID3v1Tag();
if (id3v2 != null) {
System.out.println("id3v2");
System.out.println(id3v2.getAlbumTitle());//专辑名
System.out.println(id3v2.getSongTitle());//歌曲名
System.out.println(id3v2.getLeadArtist());//歌手
} else {
System.out.println("id3v1");
System.out.println(id3v1.getAlbumTitle());
System.out.println(id3v1.getSongTitle());
System.out.println(id3v1.getLeadArtist());
}
AbstractLyrics3 lrc3Tag = file.getLyrics3Tag();
if (lrc3Tag != null) {
String lyrics = lrc3Tag.getSongLyric();
System.out.println(lyrics);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TagException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("over");
}
}
显示结果:
id3v1
依然范特西
听妈妈的话
周杰伦
[ti:听妈妈的话]
[ar:周杰伦]
[al:依然范特西]
[by:Hybert Kwok]
[00:00.11]听妈妈的话
[00:01.11]词:周杰伦 曲:周杰伦
[00:02.11]编曲:林迈可 洪敬饶 制作人:周杰伦
[00:04.11]和声编写:周杰伦 和声:周杰伦
[00:06.11]录音室:阿尔发录音室
[00:08.11]歌词录入:Hybert Kwok
[00:09.00]
[00:10.14]小朋友 你是否有很多问号
[00:12.76]为什么 别人在那看漫画
[00:15.39]我却在学画画 对着钢琴说话
[00:17.87]别人在玩游戏 我却靠在墙壁背我的ABC
[00:20.88]我说我要一台大大的飞机
[00:23.41]但却得到一台旧旧录音机
[00:25.98]为什么要听妈妈的话
[00:28.29]长大后你就会开始懂了这段话 哼
[03:15.77][00:30.76]长大后我开始明白
[03:18.74][00:33.73]为什么我 跑得比别人快
[03:20.15][00:35.14]飞得比别人高
[03:21.06][00:36.38]将来大家看的都是我画的漫画
[03:24.02][00:38.73]大家唱的都是 我写的歌
[03:26.81][00:41.45]妈妈的辛苦 不让你看见
[03:29.22][00:44.07]温暖的食谱在她心里面
[03:31.81][00:46.51]有空就多多握握她的手
[03:34.65][00:49.20]把手牵着一起梦游
[03:36.84][02:55.18][02:13.93][00:51.60]听妈妈的话 别让她受伤
[03:47.22][03:05.96][02:24.72][01:01.64]想快快长大 才能保护她
[03:57.60][02:34.66][01:11.43]美丽的白发 幸福中发芽
[04:07.82][02:45.16][01:22.46]天使的魔法 温暖中慈祥
[01:32.93]在你的未来 音乐是你的王牌
[01:34.71]拿王牌谈个恋爱
[01:36.18]唉!我不想把你教坏
[01:37.71]还是听妈妈的话吧
[01:39.02]晚点再恋爱吧
[01:40.46]我知道你未来的路
[01:42.59]但妈比我更清楚
[01:43.90]你会开始学其他同学
[01:45.03]在书包写东写西
[01:46.00]但我建议最好写妈妈
[01:47.60]我会用功读书
[01:48.73]用功读书 怎么会从我嘴巴说出
[01:50.84]不想你输 所以要叫你用功读书
[01:53.97]妈妈织给你的毛衣 你要好好的收着
[01:56.06]因为母亲节到的时候我要告诉她我还留着
[01:58.41]对了!我会遇到了周润发
[02:00.81]所以你可以跟同学炫耀
[02:01.88]赌神未来是你爸爸
[02:02.97]我找不到 童年写的情书
[02:05.44]你写完不要送人
[02:06.52]因为过两天你会在操场上捡到
[02:07.90]你会开始喜欢上流行歌
[02:11.31]因为张学友开始准备唱《吻别》
[04:22.93]END
over