id3lib:复制帧不起作用
id3lib: copying frames does not work
我正在尝试将所有 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 example。我之前与 id3 没有任何关系,所以我可能只是不了解帧和字段的工作方式。
问题是,当Update()
被触发时,添加到tFile
的ID3_Frame
不存在了。正确的方法是创建指向 ID3_Frame
副本的指针并将它们附加到 ID3_Tag
:
while (NULL != (sFrame = sFrItr->GetNext()))
{
tFile.AttachFrame(new ID3_Frame(*sFrame));
}
AttachFrame()
会处理内存并在之后自行删除数据。
我正在尝试将所有 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 example。我之前与 id3 没有任何关系,所以我可能只是不了解帧和字段的工作方式。
问题是,当Update()
被触发时,添加到tFile
的ID3_Frame
不存在了。正确的方法是创建指向 ID3_Frame
副本的指针并将它们附加到 ID3_Tag
:
while (NULL != (sFrame = sFrItr->GetNext()))
{
tFile.AttachFrame(new ID3_Frame(*sFrame));
}
AttachFrame()
会处理内存并在之后自行删除数据。