|
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.Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. |