Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;来自MPEG 4文件的Taglib封面艺术_C++_Qt_Taglib_Mpeg 4 - Fatal编程技术网

C++ C++;来自MPEG 4文件的Taglib封面艺术

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= 静态铸造(左前

作为一个附带/有趣的项目,我正在构建一个音频播放器(Qt应用程序),其中一个障碍是显示嵌入式封面艺术。对于*.mp3文件,这最终不是一个太大的问题,这主要归功于提供的示例:

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
来自Qt
QImage
类,“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());
}