c ++ win32环境,taglib错误

时间:2017-03-21 07:25:58

标签: c++ mp3 taglib

我想从mp3文件中提取albumart

所以我使用taglib库

提取标题和艺术家成功。

但是当我尝试提取专辑封面时,会出现错误。

void MusicContainer::getAlbumArt(const char* path) {
static const char *IdPicture = "APIC";
TagLib::MPEG::File mpegFile(path);
TagLib::ID3v2::Tag *id3v2tag = mpegFile.ID3v2Tag();
TagLib::ID3v2::FrameList Frame;
TagLib::ID3v2::AttachedPictureFrame *PicFrame;
void *RetImage = NULL, *SrcImage;
unsigned long Size;
FILE *jpegFile;
errno_t err = fopen_s(&jpegFile, "d:\\FromId3.jpg", "wb");

if (id3v2tag)
{
    // picture frame
    Frame = id3v2tag->frameListMap()[IdPicture];//error occurs on this line.

    if (!Frame.isEmpty())
    {
        for (TagLib::ID3v2::FrameList::ConstIterator it = Frame.begin(); it != Frame.end(); ++it)
        {
            PicFrame = (TagLib::ID3v2::AttachedPictureFrame *)(*it);
            //  if ( PicFrame->type() ==
            //TagLib::ID3v2::AttachedPictureFrame::FrontCover)
            {
                // extract image (in it’s compressed form)
                Size = PicFrame->picture().size();
                SrcImage = malloc(Size);
                if (SrcImage)
                {
                    memcpy(SrcImage, PicFrame->picture().data(), Size);
                    fwrite(SrcImage, Size, 1, jpegFile);
                    fclose(jpegFile);
                    free(SrcImage);
                }

            }
        }
    }
}
else
{
    cout << "id3v2 not present";
}
}

错误消息

抛出异常:写入访问冲突。

_Parent_proxy是0x10011EE0。

如果存在此异常的处理程序,则可以安全地继续该程序。

告诉我如何解决它。

0 个答案:

没有答案