C++ C++;来自MPEG 4文件的Taglib封面艺术
作为一个附带/有趣的项目,我正在构建一个音频播放器(Qt应用程序),其中一个障碍是显示嵌入式封面艺术。对于*.mp3文件,这最终不是一个太大的问题,这主要归功于提供的示例:C++ C++;来自MPEG 4文件的Taglib封面艺术,c++,qt,taglib,mpeg-4,C++,Qt,Taglib,Mpeg 4,作为一个附带/有趣的项目,我正在构建一个音频播放器(Qt应用程序),其中一个障碍是显示嵌入式封面艺术。对于*.mp3文件,这最终不是一个太大的问题,这主要归功于提供的示例: static QImage-imageForTag(TagLib::ID3v2::Tag*Tag) { TagLib::ID3v2::框架列表l=标记->框架列表(“APIC”); 图像; if(l.isEmpty()) 返回图像; TagLib::ID3v2::AttachedPictureFrame*f= 静态铸造(左前
static QImage-imageForTag(TagLib::ID3v2::Tag*Tag)
{
TagLib::ID3v2::框架列表l=标记->框架列表(“APIC”);
图像;
if(l.isEmpty())
返回图像;
TagLib::ID3v2::AttachedPictureFrame*f=
静态铸造(左前());
image.loadFromData((const uchar*)f->picture().data(),f->picture().size());
返回图像;
}
但是,如何为MPEG 4文件(特别是*.m4a)提取嵌入式封面艺术?以下是如何做到这一点:
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
类,“file”只是一个char*
变量
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());
}