www.mamboteam.com
Project1.pl Advertisement
Start arrow FAQ arrow Pliki arrow Jak odczytać tagi mp3?
piątek, 30 lipiec 2010
 
 
Menu główne
Start
Artykuły
FAQ
Download
Kontakt
Ciekawe linki
Mapa serwisu
Logowanie





Zapomniałeś hasła?
Nie masz konta? Załóż sobie
Jak odczytać tagi mp3? Drukuj E-mail
Oceny: / 0
KiepskiBardzo dobry 
Napisał: Berl   
wtorek, 01 marzec 2005




Tag mp3 to ostatnie 128 bajtów pliku mp3. Są tam zapisane informacje na temat utworu (oczywiście, jeśli ktoś je tam wcześniej zapisał), takie jak : tytuł piosenki, wykonawca, album, rok wydania oraz kilka innych. Odczytanie tych tagów polega na pobraniu do bufora ostatnich 128 bajtów pliku mp3, i odczytaniu z niego tych informacji. Kod przykładowego unitu służący do tego znajduje się poniżej :
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
 
type
  TID3Tag = record
    ID: string[3];
    Tytul: string[30];
    Wykonawca: string[30];
    Album: string[30];
    Rok: string[4];
    Komentarz: string[30];
    Typ: Byte;
  end;
 
const
 Typy : array[0..146] of string =
    ('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',
    'Alternative Rock','Bass','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 US','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','Rhytmic Soul','Freestyle','Duet','Punk Rock','Drum Solo',
    'Acapella','Euro-House','Dance Hall','Goa','Drum & Bass','Club-House',
    'Hardcore','Terror','Indie','BritPop','Negerpunk','Polsk Punk','Beat',
    'Christian Gangsta','Heavy Metal','Black Metal','Crossover','Contemporary C',
    'Christian Rock','Merengue','Salsa','Thrash Metal','Anime','JPop','SynthPop');
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
function ReadID3Tag(FileName: string): TID3Tag;
var
  FS: TFileStream;
  Buffer: array [1..128] of Char;
begin
  FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    FS.Seek(-128, soFromEnd);
    FS.Read(Buffer, 128);
    with Result do
    begin
      ID := Copy(Buffer, 1, 3);
      Tytul := Copy(Buffer, 4, 30);
      Wykonawca := Copy(Buffer, 34, 30);
      Album := Copy(Buffer, 64, 30);
      Rok := Copy(Buffer, 94, 4);
      Komentarz := Copy(Buffer, 98, 30);
      Typ := Ord(Buffer[128]);
    end;
  finally
    FS.Free;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
    Tag : string;
begin
    if OpenDialog1.Execute then begin
        with readID3Tag(OpenDialog1.FileName) do begin
            Tag := 'ID: ' + ID + #13 + #10;
            Tag := Tag + 'Tytuł : ' + Tytul + #13 + #10;
            Tag := Tag + 'Wykonawca : ' + Wykonawca + #13 + #10;
            Tag := Tag + 'Album : ' + Album + #13 + #10;
            Tag := Tag + 'Rok : ' + Rok + #13 + #10;
            Tag := Tag + 'Komentarz : ' + Komentarz + #13 + #10;
            if (Typ >= 0) and (Typ <=146) then Tag := Tag + 'Typ muzyki : ' + Typy[Typ];
        end;
 
        ShowMessage(Tag);
    end;
end;
 
end.
Komentarze

Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie.
Tylko zarejestrowani użytkownicy mogą pisać komentarze.

 
LINKUJ PRO
Gościmy
Odwiedza nas 105 gości
Licznik odwiedzin
112122
 
Góra Góra