jaudiotagger是一个用于获取音频文件信息的框架 大家可以去官网地址去看一看使用 ~~不过官方例子里面有错误的代码~~ 运行环境java11 运行工具idea2021.2.1 获得Mp3文件信息
public static void getMusicInfo(File file) throws Exception {
//mp3文件
MP3File mp3File = (MP3File) AudioFileIO.read(file);
AudioHeader audioHeader = mp3File.getAudioHeader();
//标签
ID3v24Tag id3v2TagAsv24 = mp3File.getID3v2TagAsv24();
if (id3v2TagAsv24 != null) {
//歌曲名
String musicName = id3v2TagAsv24.getFirst(FieldKey.TITLE);
String first = id3v2TagAsv24.getFirst(ID3v24Frames.FRAME_ID_ALBUM);
//歌手
String artist = id3v2TagAsv24.getFirst(FieldKey.ARTIST);
//专辑
String album = id3v2TagAsv24.getFirst(FieldKey.ALBUM);
//时长
//路径
String path = file.getAbsolutePath();
//封面
System.out.println(album);
System.out.println(first);
}
}
获得MP3文件图片
private static void getMp3Image(File mp3File) {
byte[] imageData;
try {
MP3File mp3file = new MP3File(mp3File);
AbstractID3v2Tag tag = mp3file.getID3v2Tag();
AbstractID3v2Frame firstField = tag.getFirstField(ID3v24Frames.FRAME_ID_ATTACHED_PICTURE);
FrameBodyAPIC body = (FrameBodyAPIC) firstField.getBody();
imageData = body.getImageData();
System.out.println(imageData.length);
} catch (Exception e) {
e.printStackTrace();
}
}
获取flac文件信息图片
private static void getFlacInfo(File flac) {
try {
AudioFile read = new FlacFileReader().read(flac);
FlacTag tag = (FlacTag) read.getTag();
MetadataBlockDataPicture firstField = (MetadataBlockDataPicture) tag.getFirstField(FieldKey.COVER_ART);
byte[] imageData = firstField.getImageData();
String imageUrl = firstField.getMimeType();
File file = new File("E:/white.jpeg");
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(imageData);
fileOutputStream.flush();
fileOutputStream.close();
} catch (CannotReadException | TagException | InvalidAudioFrameException | IOException | ReadOnlyFileException e) {
e.printStackTrace();
}
}
主函数
public static void main(String[] args) {
String path = "F:/CloudMusic/中央人民广播电台少儿合唱团 - 让我们荡起双桨.mp3";
File file = new File(path);
try {
getMusicInfo(file);
getMp3Image(file);
getFlacInfo(file);
} catch (Exception e) {
e.printStackTrace();
}
}
注意 flac方法不能解析MP3文件 同理MP3方法也不能解析flac文件