2012-10-09 7 views
1

TagLib 라이브러리로 ID3 태그를 읽는 음악 응용 프로그램이 있습니다. 아티스트, 타이틀, 앨범, 연도 등에서 효과가 있습니다.TagLib을 사용하여 MP3를 읽으십시오

등급은 읽을 수 없습니다. 나는 이것을 시도했다 :

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

내 코드가 작동하지 않는 이유는 사람이 생각이 있습니까?

답변

2

는 USR = "Windows Media Player 9 시리즈"

1

나는이 문제에 자신을 발견하고, 표시 대답은 나를 위해 그것을 해결하지 않았다. 솔직히 말해서, 그것은 많은 답/해결책조차도 아니에요 - 운이 좋았던 추측은 OP를 위해 일한 것처럼 보입니다.

는 ID3v2는 (3) 사양에 따르면, Popularimeter/POPM 필드의 목적은 다음과 같은 ...이 프레임의

목적은 오디오 파일이 얼마나 좋은 지정하는 것입니다. 다른 프레임보다 더 나은 오디오 파일을 더 자주 재생하는 재생 목록과 같이 많은 흥미로운 응용 프로그램이이 프레임에서 발견 될 수 있습니다. 또는 사람들의 프로필을 비교하여 다른 사람의 '좋은'파일을 찾는 데 사용할 수 있습니다. 프레임은 매우 간단합니다. 여기에는 파일을 재생할 때마다 하나씩 증가시키려는 사용자의 전자 메일 주소, 등급 1 바이트 및 4 바이트 재생 카운터가 포함됩니다. 이메일은 종료 된 문자열입니다. 등급은 1-255이며 1은 최악이고 255는 최상입니다. 0은 알 수 없습니다. 개인 카운터가 필요없는 경우 생략 할 수 있습니다. 카운터가 모든 카운터에 도달하면 1 바이트가 카운터 앞에 삽입되어 카운터를 재생 카운터 ("PCNT")와 동일한 거리에서 8 비트 더 크게 만듭니다. 각 태그에는 하나 이상의 "POPM"프레임이있을 수 있지만 동일한 이메일 주소를 가진 태그는 하나만있을 수 있습니다. 마지막 문장의

Source

를 적어 둡니다; 여러 개의 POPM 필드가있을 수 있지만 각 이메일 주소에 대해 하나만있을 수 있습니다. 내 이해에서, 당신이 실제로 존재하는 이메일 (사용자) 값을 제공하지 않으면 TagLib은 빈 등급을 반환합니다. 이 경우, usr = "Windows Media Player 9 시리즈"의 운 좋은 추측은 Windows Media Player가 OP 등급의 작성자 였기 때문에 제대로 작동하는 것으로 보입니다.

MediaMonkey를 사용하는 나를위한 해결책은 해당 응용 프로그램에서 사용하는 전자 메일 주소 값을 "no @ email"로 결정하는 것입니다. 일단 그 가치를 논증으로 제시하면, 모든 등급을 검색 할 수 있습니다.

관련 문제