1

我正在尝试将所有 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 没有任何关系,所以我可能只是不了解框架和字段是如何工作的。

4

1 回答 1

1

问题是,当Update()被触发时,ID3_Frame添加到的 stFile不再存在。正确的方法是创建指向ID3_Frames 副本的指针并将它们附加到ID3_Tag

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

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

于 2016-06-20T20:04:30.083 回答