来自MPEG 4文件的C ++ Taglib Cover Art

时间:2011-07-01 00:21:54

标签: c++ qt taglib mpeg-4

作为一个侧面/有趣的项目,我正在构建一个音频播放器(Qt应用程序),其中一个障碍是显示嵌入式封面艺术。使用* .mp3文件最终不会出现太多问题,主要得益于here提供的示例:

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)提取嵌入式封面艺术?

1 个答案:

答案 0 :(得分:0)

以下是如何操作:

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来自Qt QImage类,&#34;文件&#34;只是一个char*变量。