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追加されたtFileがもう存在しないことです。正しい方法は、 のコピーへID3_Frameのポインターを作成し、それらを にアタッチすることID3_Tagです。

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

AttachFrame()メモリを処理し、その後データ自体を削除します。

于 2016-06-20T20:04:30.083 に答える