0
 FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read);
 MemoryStream ms = new MemoryStream();
 fs.CopyTo(ms);
 ms.Seek(0, SeekOrigin.Begin);     

 IdSharp.Tagging.ID3v2.IID3v2 tags = IdSharp.Tagging.ID3v2.ID3v2Helper.CreateID3v2(ms);                       
 // here i am changing year to new value
 tags.Year = "2012";       
 tags.Save("path"); // here it is asking for file path.

私の仕事は、id3v2 タグを読み込んで mp3 ストリームに書き込むことです。ただし、この場合の save メソッドは、文字列パスをパラメーターとして取得します。これを行う方法はありますか?現在、idsharp dll を使用しています。

4

1 に答える 1

0

save メソッドの実装を見ることができます。

int originalTagSize = IdSharp.Tagging.ID3v2.ID3v2Tag.GetTagSize(filename);

byte[] tagBytes = tags.GetBytes(originalTagSize);

if (tagBytes.Length < originalTagSize)
{
    // Eventually this won't be a problem, but for now we won't worry about shrinking tags
    throw new Exception("GetBytes() returned a size less than the minimum size");
}
else if (tagBytes.Length > originalTagSize)
{
    //In the original implementation is done with:
    //ByteUtils.ReplaceBytes(path, originalTagSize, tagBytes);
    //Maybe you should write a 'ReplaceBytes' method that accepts a stream
}
else
{
    // Write tag of equal length
    ms.Write(tagBytes, 0, tagBytes.Length);
}

私は現在の実装のコードを報告しただけで、テストもコンパイルもしていません。

于 2013-09-03T12:11:56.370 に答える