1

mp3 ファイルからすべての id3 タグを削除する必要があります。私はこれを試しました:

byte[] a = System.IO.File.ReadAllBytes("X.mp3");
int x = 0;
int b=3;
for (int i = 6; i <= 9; i++)
{
   x += (a[i] << (b * 7));
   b--;
}
byte[] r = new byte[a.Length-x];
for (int i = x; i < a.Length; i++)
{
   r[i-x] = a[i];
}
System.IO.File.WriteAllBytes("X.mp3", r);

ただし、すべての id3 タグが削除されるわけではありません。タグのサイズの計算に問題があると思いますが、何が悪いのですか?

4

2 に答える 2

0

私は最近これをしなければならず、ライブラリを使いたくありませんでした。ここにスニペットがあります:

var mp3 = File.ReadAllBytes("x.mp3");

int skip = 0;
if (Encoding.ASCII.GetString(mp3, 0, 3) == "ID3")
    skip = 7 + BitConverter.ToInt32(mp3.Skip(6).Take(4).Reverse().ToArray(), 0);

int take = mp3.Length - skip;
if (Encoding.ASCII.GetString(mp3, mp3.Length - 128, 3) == "TAG")
    take -= 128;

File.WriteAllBytes("stripped.mp3", mp3.Skip(skip).Take(take).ToArray());
于 2015-08-03T21:18:08.610 に答える
0

コードは、ファイルの先頭にある ID3v2 タグのみをアドレス指定します。MP3 ファイルに両方のタイプの ID3 (ID3v1 と ID3v2) が含まれている場合は、両方を削除する必要があります。

ID3v1 タグはファイルの最後に配置され、固定長です。それらは実際には簡単に取り除くことができます - それらは常にファイルの最後の 128 バイトであり、テキスト「TAG」で始まります。

既存のライブラリを使用して MP3 ファイルを操作する方がよい場合があります。その 1 つがオープンソース ライブラリのtaglib-sharpです。両方のタイプの ID3 タグを操作できるだけでなく、さまざまなタスクを実行できます。

于 2013-04-10T20:15:21.787 に答える