【问题标题】:C++ Taglib Cover Art from MPEG 4 files来自 MPEG 4 文件的 C++ Taglib 封面艺术
【发布时间】:2011-09-26 09:56:19
【问题描述】:

作为一个附带/有趣的项目,我正在构建一个音频播放器(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)提取嵌入式封面艺术?

【问题讨论】:

    标签: c++ qt taglib mpeg-4


    【解决方案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 来自 Qt QImage 类,“file”只是一个 char* 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 2012-03-20
      • 1970-01-01
      相关资源
      最近更新 更多