3

サイド/楽しいプロジェクトとして、私はオーディオ プレーヤー (Qt アプリケーション) を構築しています。ハードルの 1 つは、埋め込まれたカバー アートを表示することです。*.mp3 ファイルの場合、主にここで提供されている例のおかげで、これはあまり問題になりませんでした。

static QImage imageForTag(TagLib::ID3v2::Tag *tag)
{
    TagLib::ID3v2::FrameList l = tag->frameList("APIC");

    QImage image;

    if(l.isEmpty())
        return image;

    TagLib::ID3v2::AttachedPictureFrame *f =
        static_cast<TagLib::ID3v2::AttachedPictureFrame *>(l.front());

    image.loadFromData((const uchar *) f->picture().data(), f->picture().size());

    return image;
}

しかし、MPEG 4 ファイル (特に *.m4a) の埋め込みカバー アートを抽出するにはどうすればよいでしょうか?

4

1 に答える 1

1

方法は次のとおりです。

TagLib::MP4::File f(file);
TagLib::MP4::Tag* tag = f.tag();
TagLib::MP4::ItemListMap itemsListMap = tag->itemListMap();
TagLib::MP4::Item coverItem = itemsListMap["covr"];
TagLib::MP4::CoverArtList coverArtList = coverItem.toCoverArtList();
if (!coverArtList.isEmpty()) {
    TagLib::MP4::CoverArt coverArt = coverArtList.front();
    image.loadFromData((const uchar *)
    coverArt.data().data(),coverArt.data().size());
}

imageは QtQImageクラスのもので、「ファイル」は単なるchar*変数です。

于 2016-09-16T16:34:28.283 に答える