2008-09-16 40 views

Trả lời

168

Thirding TagLib Sharp.

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

+1. Đúng thứ tôi cần. – David

+1

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

+3

Một chút trễ, 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 [] {"Performer 1", "Performer 2", "Performer 3"}; – nokturnal

15

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

+0

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

+0

+1. Đúng thứ tôi cần. – David

+0

Xem câu trả lời của hewins bên dưới cho vị trí liên kết mới –

62

TagLib Sharp khá phổ biến.

Lưu ý phụ, nếu bạn muốn xem nhanh và bẩn khi tự mình làm .. đây là đoạn mã C# mà 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(); 
       } 
      } 
     } 
+11

Chỉ dành cho ID3v1. v2 có cấu trúc khác, nó ở phần đầu của tập tin (trái ngược với v1 là cuối cùng) và có chiều dài biến đổi (v1 luôn là 128 byte). – jishi

+2

+1. Đúng thứ tôi cần. – David

+0

Không hoạt động với tôi :( –

25

UltraID3Lib ...

//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(); 
+0

+1 Đây là thư viện tốt nhất từ ​​trước đến nay - vì 'UltraID3Lib hỗ trợ hầu hết tất cả bảy loại bốn khung được chỉ định trong ID3 v2.3 'cũng như các thẻ ID3v1 ban đầu Câu trả lời hay nhất – James

+0

+1 Cách này dễ sử dụng hơn và đơn giản hơn để xử lý siêu dữ liệu mp3 – amrswalha

+1

Tôi đã sử dụng nó 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 chóng và dễ sử dụng và chỉ dành cho tất cả các thẻ tồn tại trong các 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 một thẻ khác). comprehe tập tin trợ giúp nsive. Tôi sẽ giới thiệu điều này cho mọi người. – fredsbend

2

Tôi đã đặt thư viện bộ giải mã mp3 và cung cấp cho các nhà phát triển .net. Bạn có thể tìm thấy nó ở đây:

http://sourceforge.net/projects/mpg123net/

Bao gồm các mẫu để chuyển đổi tập tin mp3 để PCM, và đọc các thẻ ID3.

1

ID3.NET triển khai ID3v1.x và ID3v2.3 và hỗ trợ các hoạt động đọc/ghi trên phần ID3 trong tệp MP3. Ngoài ra còn có sẵn NuGet package.

0

Chỉ cần chứng minh điều này ở đâu đó:

tôi đã có thể biên dịch lại TagLib-Sharp cho NET Core 2. các tùy chọn khác để làm điều đó (id3lib và nhiều hơn nữa) không làm việc cho NET Core.

Các vấn đề liên quan