Lihat / edit data ID3 untuk file MP3

152

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

Mag Roader
sumber

Jawaban:

186

Thirding TagLib Sharp .

TagLib.File f = TagLib.File.Create(path);
f.Tag.Album = "New Album Title";
f.Save();
Luke
sumber
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();
                }
            }
        }
mmcdole
sumber
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();
Mat
sumber
+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.

tslocum
sumber
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
2

Saya membungkus pustaka decoder mp3 dan membuatnya tersedia untuk para pengembang .net. Anda dapat menemukannya di sini:

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

Termasuk sampel untuk mengkonversi file mp3 ke PCM, dan membaca tag ID3.

Daniel Mošmondor
sumber
1

ID3.NET menerapkan ID3v1.x dan ID3v2.3 dan mendukung operasi baca / tulis pada bagian ID3 dalam file MP3. Ada juga paket NuGet yang tersedia.

0x8BADF00D
sumber