ดู / แก้ไขข้อมูล ID3 สำหรับไฟล์ MP3


152

วิธีที่รวดเร็วและง่ายในการดูและแก้ไขแท็ก ID3 (ศิลปินอัลบั้ม ฯลฯ ) โดยใช้ C # คืออะไร

คำตอบ:


186

Thirding taglib ชาร์ป

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

1
ใครช่วยบอกวิธีตั้งค่าคุณสมบัติศิลปินได้บ้าง มีคุณสมบัติที่เกี่ยวข้องมากมาย (FirstArtist, ศิลปิน, JointedArtists, FirstPerformer) และเกือบทั้งหมดเป็นแบบอ่านอย่างเดียวหรือเลิกใช้ ...
Laserson

3
ช้าไปหน่อย แต่คุณสามารถเพิ่มนักแสดง / ศิลปินโดยต่อไปนี้: mp3.Tag.Performers = สตริงใหม่ [] {"นักแสดง 1", "นักแสดง 2", "นักแสดง 3"};
nokturnal

ห้องสมุดที่น่ากลัว ฉันใช้มันเพื่อคัดลอกแท็ก id3
Ronnie Overby

ไลบรารีนี้สนับสนุนแท็ก ID3v2 ที่ทันสมัยหรือไม่ ตัวอย่างของ Simucal ไม่แนะนำ (เว้นแต่เขาจะเข้ามามีส่วนร่วม)
James

TagLib คือ GPL นี่เป็นคำตอบที่เหมาะสมที่นี่แทบจะไม่
Sean O'Neil

65

TagLib Sharpนั้นได้รับความนิยม

ในฐานะที่เป็นบันทึกย่อหากคุณต้องการที่จะมองอย่างรวดเร็วและสกปรกที่ทำมันเอง .. นี่คือตัวอย่าง C # ฉันพบว่าอ่านข้อมูลแท็กของ 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
นั่นเป็นเพียง ID3v1 v2 มีโครงสร้างอื่นมันอยู่ในจุดเริ่มต้นของไฟล์ (ตรงข้ามกับ v1 ซึ่งในตอนท้าย) และมีความยาวตัวแปร (v1 คือ 128 ไบต์เสมอ)
jishi

มันแก้ปัญหานานเกินไป & ไม่ปรับให้เหมาะสม stackoverflow.com/a/4361634/1395101
Amin Ghaderi

Encoding.DefaultEncoding.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' ส่วนใหญ่รวมถึงแท็ก ID3v1 ยุคแรก คำตอบที่ดีที่สุด
James

+1 นี่เป็นวิธีที่ใช้งานง่ายกว่าและง่ายกว่าในการจัดการกับ mp3 metadata
amrswalha

1
ฉันใช้สิ่งนี้เมื่อเร็ว ๆ นี้และใช้งานได้ดีและไม่เป็นภาระต่อกระบวนการ มันรวดเร็วและใช้งานง่ายและบัญชีเกี่ยวกับทุกแท็กที่มีอยู่ใน ID3 เวอร์ชัน 1 และ 2 (คุณสามารถใช้ทั้งสองในคราวเดียวหรืออย่างใดอย่างหนึ่งหรืออื่น ๆ ) มันทำมากกว่าที่ฉันต้องการ นอกจากนี้ยังมีไฟล์ช่วยเหลือที่ครอบคลุมมาก ฉันจะแนะนำสิ่งนี้กับทุกคน
1934286

ทักทาย; ลิงก์ไม่สามารถเข้าถึงได้ UltraID3Lib ถูกยกเลิกหรือไม่
ลา

ฉันพบรุ่น UltraID3Lib ที่รวมอยู่ในโครงการ GitHub นี้ github.com/clementboone/MyWindowsMediaPlayerโครงการนี้มีโฟลเดอร์ UltraID3Lib ที่เป็นเนื้อหาที่สมบูรณ์ของไฟล์ซิปที่เคยมีให้ใช้งาน
Matt

15

TagLib Sharpรองรับการอ่านแท็ก ID3


ฉันเริ่มใช้ TagLib sharp ตามคำแนะนำที่นี่และใช้งานได้ดีกับแอปพลิเคชันของฉัน (ซึ่งเป็นข้อมูล MP3 แบบอ่านอย่างเดียว)
greg7gkb

ดูคำตอบของ hewins ด้านล่างสำหรับตำแหน่งลิงก์ใหม่
Conrad Frix

2

ฉันห่อไลบรารี่ตัวถอดรหัส mp3 และทำให้มันพร้อมใช้งานสำหรับนักพัฒนา. net คุณสามารถค้นหาได้ที่นี่:

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

รวมเป็นตัวอย่างในการแปลงไฟล์ mp3 เป็น PCM และอ่านแท็ก ID3


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.