2016-06-20 6 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にそれらを結合することです。

関連する問題