java解析mp3工具

需要的jar包为jid3lib.jar,sf上的http://javamusictag.sourceforge.net/download.htm不支持中文,附件源码中的为修改版。

 

MP3Util.java

 

package com.gary.util;

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;

/**
 * MP3工具
 * 
 * supports:
 * ID3 v1 & v1.1
 * Lyrics3 v1 & v2
 * ID3 v2.2 & v2.3 & v2.4 tags
 * MP3 Frame Headers
 * 
 * @author gary
 *
 */
public class MP3Util {

	public static MP3Info getMP3Info(String path) throws IOException, TagException{
		MP3File file = new MP3File(path);
		AbstractID3v2 id3v2 = file.getID3v2Tag();
		ID3v1 id3v1 = file.getID3v1Tag();
		AbstractLyrics3 lyrics = file.getLyrics3Tag();
		if(id3v2 != null){
			return new MP3Info(id3v2.getLeadArtist(), id3v2.getSongTitle(), 
					id3v2.getAlbumTitle(), id3v2.getTrackNumberOnAlbum(), 
					id3v2.getYearReleased(), lyrics == null ? null : lyrics.getSongLyric());
		}else if(id3v1 != null){
			return new MP3Info(id3v1.getLeadArtist(), id3v1.getSongTitle(), 
					id3v1.getAlbumTitle(), id3v1.getTrackNumberOnAlbum(), 
					id3v1.getYearReleased(), lyrics == null ? null : lyrics.getSongLyric());
		}else{
			return null;
		}
	}
}

 MP3Info.java

 

package com.gary.util;
/**
 * MP3信息
 * @author gary
 *
 */
public class MP3Info {

	private String artist;
	private String songTitle;
	private String albumTitle;
	private String trackNumberOnAlbum;
	private String yearReleased;
	private String songLyric;
	
	public MP3Info(String artist, String songTitle, String albumTitle, 
			String trackNumberOnAlbum, String yearReleased, String songLyric) {
		this.artist = artist;
		this.songTitle = songTitle;
		this.albumTitle = albumTitle;
		this.trackNumberOnAlbum = trackNumberOnAlbum;
		this.yearReleased = yearReleased;
		this.songLyric = songLyric;
	}
	
	public String getArtist() {
		return artist;
	}
	
	public void setArtist(String artist) {
		this.artist = artist;
	}
	
	public String getSongTitle() {
		return songTitle;
	}
	
	public void setSongTitle(String songTitle) {
		this.songTitle = songTitle;
	}
	
	public String getAlbumTitle() {
		return albumTitle;
	}

	public void setAlbumTitle(String albumTitle) {
		this.albumTitle = albumTitle;
	}
	
	public String getTrackNumberOnAlbum() {
		return trackNumberOnAlbum;
	}
	
	public void setTrackNumberOnAlbum(String trackNumberOnAlbum) {
		this.trackNumberOnAlbum = trackNumberOnAlbum;
	}
	
	public String getYearReleased() {
		return yearReleased;
	}
	
	public void setYearReleased(String yearReleased) {
		this.yearReleased = yearReleased;
	}
	
	public String getSongLyric() {
		return songLyric;
	}
	
	public void setSongLyric(String songLyric) {
		this.songLyric = songLyric;
	}
	
	public void printMP3Info(){
		System.out.println("歌手:" + artist);
		System.out.println("歌曲名:" + songTitle);
		System.out.println("专辑名:" + albumTitle);
		System.out.println("音轨:" + trackNumberOnAlbum);
		System.out.println("发行年份:" + yearReleased);
		System.out.println("歌词:" + songLyric);
	}
}

 test:@Test

	public void testGetMP3Info() {
		try {
			MP3Util.getMP3Info("song.mp3").printMP3Info();
		} catch (IOException e) {
			System.out.println("文件未找到");
		} catch (TagException e) {
			System.out.println("读取标签错误");
			e.printStackTrace();
		}
	}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值