คู่มือการใช้งานอ่านประมาณ 4 นาที

ข้อกำหนดและสถาปัตยกรรม MP3 Karaoke (.mp3) และการฝังเนื้อร้องใน ID3 Tags

คู่มือโครงสร้างทางเทคนิคของไฟล์ MP3 Karaoke, การอ่าน ID3v2 Tags, การสกัดเฟรม TXXX/TEXT, การถอดรหัสภาษาไทย TIS-620 และการซิงค์เวลาร่วมกับ HTML5 Audio

1. ภาพรวมสถาปัตยกรรม MP3 Karaoke

MP3 Karaoke คือเทคโนโลยีการรวมไฟล์เสียงดนตรีสดหรือเสียงร้องจริง (MPEG-1 Layer III) เข้ากับโครงสร้าง **ID3v2 Metadata Tags** ที่สอดไส้ไฟล์ XML เนื้อเพลงแบบเจาะลึกรายคำไว้ในตัว ช่วยให้เครื่องเล่นสามารถเล่นเสียงคุณภาพสูงระดับสตูดิโอ พร้อมทั้งแสดงผลการปาดสีเนื้อเพลงตามจังหวะเรียลไทม์ได้อย่างสมบูรณ์แบบในไฟล์ .mp3 เพียงไฟล์เดียว

2. การถอดรหัส ID3v2 Tags และการอ่านอักขระภาษาไทย (TIS-620)

ตัวประมวลผลจะตรวจสอบ 10 ไบต์แรกของไฟล์เพื่อหารหัส ID3 Magic Bytes อ่านขนาด Synchsafe Integer และดึงเฟรมข้อความมาตรฐานพร้อมแปลงรหัสอักขระภาษาไทย Windows-874 / TIS-620:

เฟรม ID3v2 มาตรฐานที่ถูกดึงข้อมูล

เฟรมชื่อเพลง
เฟรม TIT2 (Title)

บันทึกชื่อเพลง ถอดรหัสอักขระภาษาไทยด้วย TIS-620 / Windows-874 อัตโนมัติ

เฟรมศิลปิน
เฟรม TPE1 (Artist)

บันทึกชื่อศิลปินหรือวงดนตรีผู้ขับร้อง

เฟรมอัลบั้ม
เฟรม TALB (Album)

บันทึกชื่ออัลบั้มหรือคอลเลกชันเพลง

3. การสกัดเนื้อเพลง KLyr XML จากเฟรม TXXX / TEXT

เนื้อร้องคาราโอเกะถูกซ่อนไว้ในเฟรม ID3 Text ชนิดพิเศษ (เช่น TEXT, TXXX_TEXT หรือ TXXX_Lyricist) ที่ขึ้นต้นด้วยข้อความ LyrHdr โดยมีกระบวนการถอดรหัสดังนี้:

ขั้นตอนการดึงเนื้อเพลงจาก ID3 Frame

  1. 1
    1. สแกนหาเฟรมเนื้อร้อง: สแกนหาเฟรมข้อความ ID3 ที่ขึ้นต้นด้วยข้อความ LyrHdr1
  2. 2
    2. ตัด Prefix และถอดรหัส Base64: ตัดข้อความ LyrHdr1 ออก แล้วถอดรหัสข้อความ Base64 เป็นไบต์ไบนารี
  3. 3
    3. คลายการบีบอัด zlib: คลายการบีบอัดไบต์ไบนารีด้วย pako.inflate() เพื่อให้ได้ไฟล์ XML
  4. 4
    4. ถอดรหัส XML และซิงค์เวลาร่วมกับ HTML5 Audio: ถอดรหัสข้อมูล <INFO> และแท็กเวลารายคำ <WORD> เพื่อซิงค์ตำแหน่งเวลากับ audio.currentTime สำหรับการปาดสีเนื้อเพลงบนหน้าจอเรียลไทม์