Xem / chỉnh sửa dữ liệu ID3 cho các tệp MP3


152

Cách nhanh chóng và dễ dàng để xem và chỉnh sửa thẻ ID3 (nghệ sĩ, album, v.v.) bằng C # là gì?

Câu trả lời:


186

Thirding TagLib sắc nét .

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

1
Ai đó có thể cho tôi biết làm thế nào để thiết lập tài sản Nghệ sĩ? Có rất nhiều thuộc tính liên quan (FirstArtist, Artist, JointedArtists, FirstPerformer) và hầu hết tất cả chúng đều chỉ đọc hoặc không dùng nữa ...
Laserson

3
Hơi muộn một chút, nhưng bạn có thể thêm người biểu diễn / nghệ sĩ bằng cách sau: mp3.Tag.Performers = new string [] {"Người biểu diễn 1", "Người biểu diễn 2", "Người biểu diễn 3"};
nokturnal

Thư viện tuyệt vời. Tôi đã sử dụng nó để sao chép các thẻ id3.
Ronnie Overby

Thư viện này có hỗ trợ thẻ ID3v2 hiện đại không? Đoạn trích của Simucal đề nghị không (trừ khi anh ta chỉ tham gia vào nó).
James

TagLib là GPL. Đây không phải là một câu trả lời thích hợp ở đây.
Sean O'Neil

65

TagLib Sharp khá phổ biến.

Như một lưu ý phụ, nếu bạn muốn có một cái nhìn nhanh chóng và bẩn thỉu khi tự mình làm điều đó .. đây là đoạn trích C # tôi tìm thấy để đọc thông tin thẻ của mp3.

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
Điều đó chỉ dành cho ID3v1. v2 có cấu trúc khác, nó nằm ở phần đầu của tệp (trái ngược với v1 ở cuối) và có độ dài thay đổi (v1 luôn là 128 byte).
jishi

đó là giải pháp quá dài và không được tối ưu hóa. stackoverflow.com/a/4361634/1395101
Amin Ghaderi

Encoding.Defaultcó thể được thay thế bằng Encoding.UTF8. Để biết thêm thông tin, hãy truy cập: gigamonkeys.com/book/prreal-an-id3-parser.html
Mirjalal

25

UltraID3Lib ...

Xin lưu ý rằng UltraID3Lib không còn có sẵn chính thức và do đó không còn được duy trì. Xem bình luận bên dưới để biết liên kết đến dự án Github bao gồm thư viện này

//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 Đây là thư viện tốt nhất cho đến nay - vì 'UltraID3Lib hỗ trợ hầu hết tất cả bảy mươi bốn loại khung được chỉ định trong ID3 v2.3' cũng như các thẻ ID3v1 đầu tiên. Câu trả lời tốt nhất.
James

+1 Đây là cách dễ dàng hơn để sử dụng và đơn giản hơn để đối phó với siêu dữ liệu mp3
amrswalha

1
Tôi đã sử dụng điều này gần đây và nó hoạt động tuyệt vời và không gây gánh nặng cho quá trình. Nó nhanh và dễ sử dụng và chỉ chiếm mọi thẻ tồn tại trong phiên bản ID3 1 và 2 (bạn có thể sử dụng cả hai cùng một lúc hoặc chỉ một hoặc hai thẻ khác). Nó làm nhiều hơn tôi cần. Nó cũng có một tập tin trợ giúp rất toàn diện. Tôi sẽ giới thiệu nó cho mọi người.
1934286

Lời chào hỏi; Liên kết là không thể truy cập. UltraID3Lib có bị ngừng không?
Tạm biệt

Tôi tìm thấy một phiên bản UltraID3Lib có trong dự án GitHub này. github.com/clementboone/MyWindowsMediaPlayer Dự án chứa một thư mục UltraID3Lib là nội dung đầy đủ của tệp zip đã từng có sẵn.
Matt

15

TagLib Sharp có hỗ trợ đọc thẻ ID3.


Tôi bắt đầu sử dụng TagLib sharp dựa trên khuyến nghị ở đây và nó hoạt động rất tốt cho ứng dụng của tôi (chỉ đọc thông tin MP3).
greg7gkb

Xem câu trả lời của hewins bên dưới để biết vị trí liên kết mới
Conrad Frix


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.