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.