Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ID3v1 записать


Автор: ShadowDancer 9.9.2006, 17:27
Считывается он так:
Код

type  
  TID3Tag = record  
    ID: string[3];  
    Titel: string[30];  
    Artist: string[30];  
    Album: string[30];  
    Year: string[4];  
    Comment: string[30];  
    Genre: Byte;
  end;

const  
 Genres : 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');


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);
      Titel := Copy(Buffer, 4, 30);
      Artist := Copy(Buffer, 34, 30);
      Album := Copy(Buffer, 64, 30);  
      Year := Copy(Buffer, 94, 4);  
      Comment := Copy(Buffer, 98, 30);  
      Genre := Ord(Buffer[128]);  
    end;  
  finally  
    FS.Free;  
  end;
end; 


а как мне записать свои значения, без компонентов

Автор: Alexeis 9.9.2006, 17:31
Да абсалютно аналогично подготовить указаную струкуру заполнить ее поля и записать ее в конец файла по смещению -128 байт считая от конца файла либо дописать ее в конец если ее до того там не было.

Добавлено @ 17:33 
Вот уже готовый модуль который это делает
http://delphiworld.narod.ru/base/mp3_work.html

Добавлено @ 17:34 
Кстати если надо, то у меня есть модуль и для IDv2

Автор: ShadowDancer 9.9.2006, 17:36
Цитата(alexeis1 @  9.9.2006,  17:31 Найти цитируемый пост)
Да абсалютно аналогично подготовить указаную струкуру заполнить ее поля и записать ее в конец файла по смещению -128 байт считая от конца файла либо дописать ее в конец если ее до того там не было.

Суть понятна, но как это сделать - нет.
За ссылу спасибо.

Добавлено @ 17:37 
Цитата(alexeis1 @  9.9.2006,  17:31 Найти цитируемый пост)
Кстати если надо, то у меня есть модуль и для IDv2 

Надо, давай... smile

Автор: Alexeis 9.9.2006, 18:45
Это ID3v2

но у меня есть еще и ID3v4

Добавлено @ 18:48 

Прикрепляю и ID3v4

Автор: Тьма 9.9.2006, 20:15
если тебе интерестна более глубокая работа с тегами, то вот ссылка, правда на английском языке
http://www.id3.org

Автор: Alexeis 9.9.2006, 20:19
Оппа, так что он не захтел заменить одно прикрепление на другое...
Ладно, прикрепляю тогда ID3v4 отдельно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)