《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