17

我正在制作一个 mp3 播放器。我正在使用Java mp3 id3 标记库。我知道专辑封面被编码为 ID3v2 标签。

我可以访问 mp3 文件的 ID3v2 标签,但是我无法获得艺术品!API中的 AbstractID3v2 类中的所有方法 似乎都没有检索图片。

如何使用这个库?

4

3 回答 3

28

我最终使用了另一个库,我使用了 mp3agic

这是一个很棒的库,易于使用。这是我用来获取专辑封面的示例代码

Mp3File song = new Mp3File(filename);
if (song.hasId3v2Tag()){
     ID3v2 id3v2tag = song.getId3v2Tag();
     byte[] imageData = id3v2tag.getAlbumImage();
     //converting the bytes to an image
     BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData));
}
于 2013-02-07T10:55:35.563 回答
3

还有可以读/写 Mp3、Mp4(Mp4 音频、M4a 和 M4p 音频)Ogg Vorbis、Flac 和 Wma 以及其他一些(专辑艺术)的 Jaudiotagger

MP3File f = (Mp3File)AudioFileIO.read(testFile);
List<Artwork> artworkList;
if (f.hasID3v1Tag()) {
    ID3v1Tag v1tag = f.getID3v1Tag();
    artworkList = (List<Artwork>) v1tag.getArtworkList();
    /* ... */
}
于 2014-01-31T12:16:11.367 回答
0

您可以使用 mp3agic 来做到这一点,这是另一种方式!

在此处获取 Jar:https ://jar-download.com/artifacts/com.mpatric/mp3agic/0.9.0/source-code

Mp3File mp3file = new Mp3File("SomeMp3File.mp3");
if (mp3file.hasId3v2Tag()) {
   ID3v2 id3v2Tag = mp3file.getId3v2Tag();
   byte[] imageData = id3v2Tag.getAlbumImage();
}

if (imageData != null) {
   String mimeType = id3v2Tag.getAlbumImageMimeType();
   RandomAccessFile file = new RandomAccessFile("album-artwork", "rw");
   file.write(data);
   file.close();
}
于 2020-07-18T15:38:46.433 回答