《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");
- }
- }