1

TagLibライブラリでID3タグを読み取る音楽アプリケーションがあります。アーティスト、タイトル、アルバム、年にうまく機能しています...

しかし、私は評価を読むことができません。私はこれを試しました:

TagLib.File track = TagLib.File.Create(name);
TagLib.Tag tag123 = track.GetTag(TagLib.TagTypes.Id3v2);
var usr = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
TagLib.Id3v2.PopularimeterFrame frame = TagLib.Id3v2.PopularimeterFrame.Get(
                                         (TagLib.Id3v2.Tag)tag123, usr, true);

しかしframe.PlayCountframe.Rating常に0

私のコードが機能しない理由を誰かが知っていますか?

4

2 に答える 2

1

usr = "Windows MediaPlayer9シリーズ"

于 2013-02-15T20:32:37.807 に答える
1

私は自分でこの問題に遭遇しました、そしてマークされた答えは私のためにそれを解決しませんでした。率直に言って、それは答え/解決策の多くではありません-OPのためにうまくいったように見える幸運な推測です。

ID3v2(3)仕様によると、Popularimeter/POPMフィールドの目的は次のとおりです...

このフレームの目的は、オーディオファイルの品質を指定することです。このフレームには、他のファイルよりも優れたオーディオファイルを頻繁に使用するプレイリストなど、多くの興味深いアプリケーションが見つかります。また、人の好みをプロファイリングし、人のプロファイルを比較して他の「良い」ファイルを見つけるために使用することもできます。フレームはとてもシンプルです。これには、ユーザーへの電子メールアドレス、1バイトの評価バイトおよび4バイトの再生カウンターが含まれ、ファイルが再生されるたびに1ずつ増加することを目的としています。電子メールは終了した文字列です。評価は1〜255で、1が最低で、255が最高です。0は不明です。個人用カウンターが必要ない場合は省略できます。カウンタがすべて1に達すると、カウンタの前に1バイトが挿入され、再生カウンタ( "PCNT")と同じようにカウンタが8ビット大きくなります。

ソース

その最後の文に注意してください。複数のPOPMフィールドが存在する場合がありますが、電子メールアドレスごとに1つだけです。私の理解では、実際に存在する電子メール(ユーザー)の値を提供しない場合、TagLibは空の評価を返します。この場合、 Windows Media PlayerがOPの評価の作成者である可能性が高いため、 usr = "Windows MediaPlayer9シリーズ"の幸運な推測がうまくいったようです。

MediaMonkeyを使用している私にとっての解決策は、そのアプリケーションで使用されている電子メールアドレスの値(「no @ email」)を把握することでした。その値を引数として指定すると、すべての評価を取得できます。

于 2017-01-30T18:26:23.640 に答える