ID3Lib:复制帧不起作用

id3lib: copying frames does not work

本文关键字:不起作用 复制 ID3Lib      更新时间:2023-10-16

我正在尝试将所有ID3V2标签从一个文件复制到另一个文件。但是我的代码不起作用(标签保持不变),我不知道为什么。

ID3_Tag sFile, tFile;
sFile.Link("source.mp3", ID3TT_ID3V2);
tFile.Link("target.mp3");
tFile.Strip();
ID3_Tag::Iterator* sFrItr = sFile.CreateIterator();
ID3_Frame* sFrame = NULL;
while (NULL != (sFrame = sFrItr->GetNext()))
{
    tFile.AddFrame(sFrame);
}
delete sFrItr;
tFile.Update();

此代码主要基于ID3Lib API示例。我之前与ID3无关,所以我可能只是不了解框架和字段的工作方式。

问题是,当触发Update()时,将ID3_Frame s添加到tFile中不再存在。正确的方法是为ID3_Frame S的副本创建指针,然后将其连接到ID3_Tag

while (NULL != (sFrame = sFrItr->GetNext()))
{
    tFile.AttachFrame(new ID3_Frame(*sFrame));
}

AttachFrame()照顾内存并之后删除数据本身。