2016-06-20 36 views
1

我試圖將所有ID3v2標記從一個文件複製到另一個文件。但我的代碼不起作用(標籤保持不變),我不知道爲什麼。id3lib:複製幀不起作用

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有關的事情,所以我可能只是不瞭解幀和字段的工作原理。

回答

1

問題是,當Update()被觸發時,ID3_Frame被添加到tFile不再存在。正確的方法是創建指向的ID3_Frame S複製,並將它們連接到ID3_Tag

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

AttachFrame()佔用內存的關懷和刪除數據本身算賬。