MP3 파일의 ID3 데이터보기 / 편집


152

C #을 사용하여 ID3 태그 (아티스트, 앨범 등)를 빠르고 쉽게보고 편집하는 방법은 무엇입니까?

답변:


186

세 번째 TagLib Sharp .

TagLib.File f = TagLib.File.Create(path);
f.Tag.Album = "New Album Title";
f.Save();

1
아티스트 속성을 설정하는 방법을 알려주는 사람이 있습니까? 많은 관련 속성 (FirstArtist, Artist, JointedArtists, FirstPerformer)이 있으며 그 대부분은 읽기 전용이거나 더 이상 사용되지 않습니다 ...
Laserson

3
조금 늦었지만 다음과 같이 연주자 / 아티스트를 추가 할 수 있습니다. mp3.Tag.Performers = new string [] { "Performer 1", "Performer 2", "Performer 3"};
야행성

멋진 도서관. id3 태그를 복사하는 데 사용했습니다.
Ronnie Overby

이 라이브러리는 최신 ID3v2 태그를 지원합니까? Simucal의 스 니펫은 제안하지 않았습니다 (단지 그가 참여하지 않는 한).
제임스

TagLib는 GPL입니다. 이것은 적절한 대답이 아닙니다.
Sean O'Neil

65

TagLib Sharp 는 꽤 인기가 있습니다.

부수적으로, 당신이 그것을 스스로 할 때 빠르고 더러운 엿보기를 원한다면 .... 여기에 mp3의 태그 정보를 읽는 C # 스 니펫이 있습니다.

class MusicID3Tag

{

    public byte[] TAGID = new byte[3];      //  3
    public byte[] Title = new byte[30];     //  30
    public byte[] Artist = new byte[30];    //  30 
    public byte[] Album = new byte[30];     //  30 
    public byte[] Year = new byte[4];       //  4 
    public byte[] Comment = new byte[30];   //  30 
    public byte[] Genre = new byte[1];      //  1

}

string filePath = @"C:\Documents and Settings\All Users\Documents\My Music\Sample Music\041105.mp3";

        using (FileStream fs = File.OpenRead(filePath))
        {
            if (fs.Length >= 128)
            {
                MusicID3Tag tag = new MusicID3Tag();
                fs.Seek(-128, SeekOrigin.End);
                fs.Read(tag.TAGID, 0, tag.TAGID.Length);
                fs.Read(tag.Title, 0, tag.Title.Length);
                fs.Read(tag.Artist, 0, tag.Artist.Length);
                fs.Read(tag.Album, 0, tag.Album.Length);
                fs.Read(tag.Year, 0, tag.Year.Length);
                fs.Read(tag.Comment, 0, tag.Comment.Length);
                fs.Read(tag.Genre, 0, tag.Genre.Length);
                string theTAGID = Encoding.Default.GetString(tag.TAGID);

                if (theTAGID.Equals("TAG"))
                {
                    string Title = Encoding.Default.GetString(tag.Title);
                    string Artist = Encoding.Default.GetString(tag.Artist);
                    string Album = Encoding.Default.GetString(tag.Album);
                    string Year = Encoding.Default.GetString(tag.Year);
                    string Comment = Encoding.Default.GetString(tag.Comment);
                    string Genre = Encoding.Default.GetString(tag.Genre);

                    Console.WriteLine(Title);
                    Console.WriteLine(Artist);
                    Console.WriteLine(Album);
                    Console.WriteLine(Year);
                    Console.WriteLine(Comment);
                    Console.WriteLine(Genre);
                    Console.WriteLine();
                }
            }
        }

12
ID3v1에만 해당됩니다. v2는 또 다른 구조를 가지고 있으며 파일의 시작 부분에 있으며 (끝에있는 v1과 반대) 가변 길이 (v1은 항상 128 바이트)입니다.
jishi

너무 길고 최적화되지 않은 솔루션입니다. stackoverflow.com/a/4361634/1395101
Amin Ghaderi

Encoding.Default로 교체 할 수 있습니다 Encoding.UTF8. 자세한 내용을 보려면 다음 사이트를 방문 : gigamonkeys.com/book/practical-an-id3-parser.html
Mirjalal

25

UltraID3Lib ...

UltraID3Lib는 더 이상 공식적으로 제공되지 않으므로 더 이상 유지 관리되지 않습니다. 이 라이브러리를 포함하는 Github 프로젝트에 대한 링크는 아래 주석을 참조하십시오

//using HundredMilesSoftware.UltraID3Lib;
UltraID3 u = new UltraID3();
u.Read(@"C:\mp3\song.mp3");
//view
Console.WriteLine(u.Artist);
//edit
u.Artist = "New Artist";
u.Write();

+1 이것은 최고의 라이브러리입니다. 'UltraID3Lib는 ID3 v2.3에 지정된 72 가지 유형의 프레임과 초기 ID3v1 태그를 대부분 지원하기 때문입니다. 가장 좋은 답변입니다.
제임스

+1 이것은 mp3 메타 데이터를 다루는 훨씬 쉽고 사용하기 쉬운 방법
amrswalha

1
나는 이것을 최근에 사용했으며 훌륭하게 작동하며 프로세스에 부담을주지 않습니다. ID3 버전 1과 2에 존재하는 거의 모든 태그를 빠르고 쉽게 사용할 수 있으며 한 번에 또는 하나만 사용할 수 있습니다. 필요한 것보다 더 많은 일을합니다. 또한 매우 포괄적 인 도움말 파일이있었습니다. 나는 이것을 모두에게 추천 할 것입니다.
1934286

인사말; 링크에 액세스 할 수 없습니다. UltraID3Lib가 중단 되었습니까?
Goodbye

이 GitHub 프로젝트에 포함 된 UltraID3Lib 버전을 찾았습니다. github.com/clementboone/MyWindowsMediaPlayer 이 프로젝트에는 사용 가능한 zip 파일의 전체 내용 인 UltraID3Lib 폴더가 포함되어 있습니다.
Matt

15

TagLib Sharp 는 ID3 태그 읽기를 지원합니다.


여기 권장 사항을 기반으로 TagLib sharp를 사용하기 시작했으며 내 응용 프로그램 (MP3 정보의 읽기 전용)에 효과적이었습니다.
greg7gkb

새로운 링크 위치에 대해서는 아래 hewins의 답변을 참조하십시오
Conrad Frix


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.