0

JAudioTagger を使用して音楽ファイルからメタデータを取得し、タイトル、年などを取得していますが、カバー アートの取得に問題があります。オンラインで検索して例を見つけることができませんでした。

これが私の現在のコードです。デバッグ時にcoverArt BufferedImageがnullとして表示されています。確認したところ、mp3 ファイルに表紙画像が含まれています。

ID3v23Tag id3v23Tag = (ID3v23Tag)tag;
    TagField coverArtField =
    id3v23Tag.getFirstField(org.jaudiotagger.tag.id3.ID3v23FieldKey.COVER_ART.getFieldName());
    FrameBodyAPIC body = (FrameBodyAPIC)((ID3v23Frame)coverArtField).getBody();
    byte[] imageRawData = (byte[])body.getObjectValue(DataTypes.OBJ_PICTURE_DATA);
    coverArt = ImageIO.read(ImageIO.createImageInputStream(new ByteArrayInputStream(imageRawData)));
4

3 に答える 3

2

私のアプリケーションでは、

MP3File mp3;    
mp3.getTag().getFirstArtwork();

MP3 の firstArtwork を返します (ほとんどの場合、探しているカバーです)。これは、必要に応じて BufferedImage にキャストできます。

于 2016-02-09T21:02:37.270 に答える
0

通常、最も簡単な方法は次のとおりです。

List<Artwork> existingArtworkList = tag.getArtworkList();

フレーム ボディ レベルでキャスティングや作業を行う必要はありません。あなたがこれをしている理由はありますか?

を見てくださいimageRawData- それは正しく読み取られていますか? 問題は imageio レベルにあるのかもしれません。JPEG の場合は0xFF, 0xD8、たとえば開始する必要があります。

于 2015-08-24T08:35:00.567 に答える