2016-06-20 3 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()이 실행될 때 이 tFile에 추가되면 더 이상 존재하지 않는 것이 문제입니다.

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

AttachFrame() 메모리을 담당하고 이후 데이터 자체를 삭제합니다 올바른 방법은 ID3_Frame의 사본에 대한 포인터를 생성하고 ID3_Tag에 첨부하는 것입니다.

관련 문제