Tehnika Krstarice > Programiranje > Delphi - Čitanje ID3 taga iz MP3 fajla

Delphi - Čitanje ID3 taga iz MP3 fajla

27.12.2000.

Gotovo svaki MP3 fajl poseduje u svom zaglavlju (ID3-Tag) informacije o numeri, izvođaču, godini izdavanja i eventualno neki komentar. Ovu informaciju ne nose sve pesme u MP3 formatu, ali je "ID3" zaglavlje gotovo standard. U sledećim redovima prikazaćemo proceduru koja će iščitavati ove informacije i koju recimo možete da upotrebite za kreiranje sopstvene baze podataka o MP3 numerama na vašem kompjuteru.

Struktura ID3-Tag zaglavlja je dugačka 128 bajtova, i izgleda ovako:

 type 
TID3Tag = packed record      // 128 bytes 
   TAGID: array[0..2] of char;   //  3 bytes: TAG 
   Title: array[0..29] of char;  // 30 bytes: Naslov numere 
   Artist: array[0..29] of char;  // 30 bytes: Izvodjac numere
   Album: array[0..29] of char;  // 30 bytes: Album 
   Year: array[0..3] of char;   //  4 bytes: Godina izdanja
   Comment: array[0..29] of char; // 30 bytes: Komentar
  Genre: byte;          //  1 byte: ID tipa muzickog zanra 
end; 

Za čitanje ID3 zaglavlja, iskoristićemo sledeću funkciju, koja će rezultat prikazati u dijalog prozoru:

procedure TForm1.Button1Click(Sender: TObject); 
const 
  _mp3file='G:\Mp3\Bajaga\442 do Beograda.mp3'; 
var 
  id3tag: TID3tag; 
  mp3file: Tfilestream; 
begin 
  mp3file:=Tfilestream.create(_mp3file,fmOpenRead); 
  try 
   mp3file.position:=mp3file.size-128; 
   mp3file.Read(id3tag,SizeOf(id3tag)); 
   showmessage(' Naslov: '+id3tag.title+#13+ 
         ' Izvodjac: '+id3tag.artist+#13+ 
         ' Album: '+id3tag.album+#13+ 
         ' Godina: '+id3tag.year+#13+ 
         ' Komentar: '+id3tag.comment+#13+ 
         ' Zanr: '+inttostr(id3tag.genre) 
         ); 
  finally 
   mp3file.free; 
 end; 
end; 

Funkcija će iščitati neki MP3 fajl, "skočiće" na traženih 128 bajtova, pročitaće ih i prikazati informacije u dijalog prozoru.

Što se tiče ID tipa muzičkog žanra, postoji lista od nekih 126 žanrova koje koristi poznati "WinAmp". Navešćemo sve žanrove, pa ih možete uvrstiti u funkciju, prvih 80 su skoro standardne, ostatak je dodao "WinAmp" (indeks počinje od nule): Blues, Classic Rock, Country, Dance, Disco, Funk, Grunge, Hip-Hop, Jazz, Metal, New Age, Oldies, Other, Pop, R&B, Rap, Reggae, Rock, Techno, Industrial, Alternative, Ska, Death Metal, Pranks, Soundtrack, Euro-Techno, Ambient, Trip-Hop, Vocal, Jazz+Funk, Fusion, Trance, Classical, Instrumental, Acid, House, Game, Sound Clip, Gospel, Noise, AlternRock, Bass, Soul, Punk, Space, Meditative, Instrumental Pop, Instrumental Rock, Ethnic, Gothic, Darkwave, Techno-Industrial, Electronic, Pop-Folk, Eurodance, Dream, Southern Rock, Comedy, Cult, Gangsta, Top 40, Christian Rap, Pop/Funk, Jungle, Native American, Cabaret, New Wave, Psychadelic, Rave, Showtunes, Trailer, Lo-Fi, Tribal, Acid Punk, Acid Jazz, Polka, Retro, Musical, Rock & Roll, Hard Rock, Folk, Folk-Rock, National Folk, Swing, Fast Fusion, Bebob, Latin, Revival, Celtic, Bluegrass, Avantgarde, Gothic Rock, Progressive Rock, Psychedelic Rock, Symphonic Rock, Slow Rock, Big Band, Chorus, Easy Listening, Acoustic, Humour, Speech, Chanson, Opera, Chamber Music, Sonata, Symphony, Booty Bass, Primus, Porn Groove, Satire, Slow Jam, Club, Tango, Samba, Folklore, Ballad, Power Ballad, Rhythmic Soul, Freestyle, Duet, Punk Rock, Drum Solo, Acapella, Euro-House, Dance Hall.

Preporučite ovaj članak

5.00 (glasova: 1)