Lihat / edit data ID3 untuk file MP3


152

Apa cara cepat dan mudah untuk melihat dan mengedit tag ID3 (artis, album, dll.) Menggunakan C #?

Jawaban:


186

Thirding TagLib Sharp .

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

1
Adakah yang bisa memberi tahu saya cara mengatur properti Artis? Ada banyak properti terkait (FirstArtist, Artist, JointedArtists, FirstPerformer) dan hampir semuanya adalah read-only atau usang ...
Laserson

3
Agak terlambat, tetapi Anda dapat menambahkan pemain / artis dengan yang berikut: mp3.Tag.Performers = string baru [] {"Performer 1", "Performer 2", "Performer 3"};
nokturnal

Perpustakaan yang luar biasa. Saya menggunakannya untuk menyalin tag id3.
Ronnie Overby

Apakah perpustakaan ini mendukung tag ID3v2 modern? Cuplikan Simucal tidak menyarankan (kecuali jika ia hanya mengambil bagian darinya).
James

TagLib adalah GPL. Ini bukan jawaban yang tepat di sini.
Sean O'Neil

65

TagLib Sharp cukup populer.

Sebagai catatan tambahan, jika Anda ingin mengintip dengan cepat dan kotor dalam melakukannya sendiri .. di sini ada cuplikan C # yang saya temukan untuk membaca info tag 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
Itu hanya untuk ID3v1. v2 memiliki struktur lain, ada di awal file (bukan v1 yang ada di akhir) dan memiliki panjang variabel (v1 selalu 128 byte).
jishi

ini solusi yang terlalu panjang & tidak dioptimalkan. stackoverflow.com/a/4361634/1395101
Amin Ghaderi

Encoding.Defaultdapat diganti dengan Encoding.UTF8. Untuk informasi lebih lanjut, kunjungi: gigamonkeys.com/book/practical-an-id3-parser.html
Mirjalal

25

UltraID3Lib ...

Ketahuilah bahwa UltraID3Lib tidak lagi tersedia secara resmi, dan karenanya tidak lagi dipertahankan. Lihat komentar di bawah ini untuk tautan ke proyek Github yang menyertakan perpustakaan ini

//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 Ini adalah perpustakaan terbaik sejauh ini - karena 'UltraID3Lib mendukung sebagian besar dari tujuh puluh empat jenis bingkai yang ditentukan dalam ID3 v2.3' serta tag ID3v1 awal. Jawaban Terbaik.
James

+1 Ini jauh lebih mudah untuk digunakan dan cara yang lebih sederhana untuk berurusan dengan mp3 metadata
amrswalha

1
Saya menggunakan ini baru-baru ini dan berfungsi luar biasa dan tidak membebani proses. Ini cepat dan mudah digunakan dan menyumbang hampir setiap tag yang ada di ID3 versi 1 dan 2 (Anda dapat menggunakan keduanya sekaligus atau hanya satu atau yang lain). Itu jauh lebih dari yang saya butuhkan. Itu juga memiliki file bantuan yang sangat komprehensif. Saya akan merekomendasikan ini kepada semua orang.
1934286

Salam pembuka; Tautan tidak dapat diakses. Apakah UltraID3Lib Dihentikan?
Selamat tinggal

Saya menemukan versi UltraID3Lib yang termasuk dalam proyek GitHub ini. github.com/clementboone/MyWindowsMediaPlayer Proyek ini berisi folder UltraID3Lib yang merupakan konten lengkap dari file zip yang dulu tersedia.
Matt

15

TagLib Sharp memiliki dukungan untuk membaca tag ID3.


Saya mulai menggunakan TagLib dengan tajam berdasarkan rekomendasi di sini dan berfungsi dengan baik untuk aplikasi saya (yang hanya baca info MP3).
greg7gkb

Lihat jawaban hewins di bawah ini untuk lokasi tautan baru
Conrad Frix


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.