1

この質問がこのサイトのどこかにすでに回答されている場合はご容赦ください。しかし、検索しても何も見つかりませんでした。taglib-sharp を使用して C# で .mp3 ファイル用の ID3v1/2 タグ エディターを作成しました。taglib-sharp はトラック番号を uint 番号として扱います。id3.orgによると:

「トラック番号/セット内の位置」フレームは、元の録音でのオーディオ ファイルの順序番号を含む数値文字列です。これは、「/」文字と、元の録音のトラック/要素の総数を含む数値文字列で拡張できます。例: 「4/9」。

個人的には「/」は使いませんが、「3」ではなく「03」と書きがちです。uint を使用する代わりに、トラック番号を文字列としてタグに直接書き込む簡単な方法はありますか?

また、副次的な質問: taglib は一部のタグ、特に URL、Orig をサポートしていないようです。アーティスト、出版社、エンコード済み。それらをどうするかについて何か考えはありますか?

4

2 に答える 2

3

更新:この回答は最初に書かれたものであるため、GetTextAsString公開されました。この回答は、それを反映するために更新されました。

TagLib# の Track フィールドは、タグ フィールドを意図したさまざまなタグ付け仕様の普遍的な近似および単純化です。ID3v2 タグの場合、仕様に従って、TRCK フィールドがスラッシュで区切られた 1 つまたは 2 つの数値文字列で構成され、数値に変換されると想定しています。

とはいえ、これはテキスト フィールドであり、好きなことを行うことができます。テキストフレームにアクセスして読み書きするだけです。

書くことは簡単Id3v2.Tag.SetTextFrameです:

var tag = (Id3v2.Tag)file.GetTag(TagTypes.Id3v2, true); // Get or create ID3v2 tag.
tag.SetTextFrame("TRCK", "03"); // Add or update TRCK frame.

TRCK は単一文字列のテキスト フレームであるため、以下を使用して同様に読み取ることができますId3v2.Tag.GetTextAsString

var tag = (Id3v2.Tag)file.GetTag(TagTypes.Id3v2, false);
var trackNumber = tag?.GetTextAsString("TRCK");
于 2013-04-08T05:05:20.920 に答える
-1

いいえ、最初にキャストせずに astringintorに保存することはできません。使用しているライブラリごとに値 3 を保存して、次のようなものを使用uintしないのはなぜですか。uint

uint track = 3;
string strTrack = track.ToString("00");

表示するには?

ライセンスで許可されている場合は、必要に応じてライブラリを変更できます。

過去に taglib シャープをざっと見たことがありますが、タグ内の既存のすべてのフレームをサポートするにはほど遠いものです。最も一般的なフレームのみをサポートします。他のものについては、使用できるデフォルトのクラスがあると思いますが、名前を思い出せません。それ以外の場合は、他にそのようなライブラリが利用可能でない限り、自分でライブラリを拡張できますが、私は知りません。

于 2013-01-15T04:33:29.700 に答える