C ++ Taglib Cover Art из файлов MPEG 4 - PullRequest
3 голосов
/ 01 июля 2011

В качестве побочного / забавного проекта я создаю аудиоплеер (приложение Qt), и одним из препятствий является отображение встроенных обложек. С файлами * .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)?

1 Ответ

1 голос
/ 16 сентября 2016

Вот как это сделать:

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, а "file" - это просто переменная char*.

...