|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Тэги mp3, WAV файлов?
Хочу сделать свой сканер mp3 i wav, но как оттуда тэги цеплять не представляю, прога находит успешно эти файлы но теперь уперся в то как выдернуть оттуда битрейт, название композиции, стерео, моно, название альбома и так далее, короче все тэги которые в нем есть.
Поиск по форуму гичего не дал или не так искал. По инету тоже ниче толкового за 20 минут не нашел или все кривое напроч. |
#2
|
||||
|
||||
Цитата:
|
#3
|
|||
|
|||
Тут не пробовал, забыл совсем. Спасиб.
|
#4
|
||||
|
||||
Код:
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'); Код:
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); 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; Код:
procedure TfrmMain.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then begin with readID3Tag(OpenDialog1.FileName) do begin LlbID.Caption := 'ID: ' + ID; LlbTitel.Caption := 'Titel: ' + Titel; LlbArtist.Caption := 'Artist: ' + Artist; LlbAlbum.Caption := 'Album: ' + Album; LlbYear.Caption := 'Year: ' + Year; LlbComment.Caption := 'Comment: ' + Comment; if (Genre >= 0) and (Genre <=146) then LlbGenre.Caption := 'Genre: ' + Genres[Genre] else LlbGenre.Caption := 'N/A'; end; end; end; Программирование - это искусство и наш смысл жизни. |
#5
|
|||
|
|||
Отлично!! То что надо!! Просто и легко. Я сразу разобрался. Только разберусь где находится еще инфа разная, сам принцип главное понят.
Спасибо всем кто помог! Еще занятие есть на пару деньков теперь. |
#6
|
||||
|
||||
А у меня такой вопрос про теги:
Как найти ID3v2 Tag? |
#7
|
||||
|
||||
Код:
//Чтение твоего ID3v2 тега function ReadID3v2Tag(const FName: string; var Tag: TCustomTag): boolean; var TI: TID3v2Info; s: array[1..ID3V2_FRAME_COUNT] of string; i: integer; begin FillChar(Tag, SizeOf(Tag), #0); // очищаем структуру Result := ReadID3v2Header(FName, TI); // читаем заголовок if (Result) and (TI.ID = ′ID3′) then // тег? begin ReadID3v2Frames(FName, TI); // читаем фреймы for i := 1 to ID3V2_FRAME_COUNT do // убираем лишние нули s := TrimRight(TI.Frame); // в конце строк Move(s[1][1], Tag.Title[1], Length(s[1])); // копируем в Tag Move(s[2][1], Tag.Artist[1], Length(s[2])); Move(s[3][1], Tag.Album[1], Length(s[3])); Tag.Track := GetTrack(s[4]); // получаем дорожку Move(s[5][1], Tag.Year[1], Length(s[5])); Tag.Genre := GenreIndex(GetGenre(s[6])); // жанр s[7] := Trim(Copy(s[7], 5, Length(s[7]) - 4)); Move(s[7][1], Tag.Comment[1], Length(s[7])); end; end; Программирование - это искусство и наш смысл жизни. Последний раз редактировалось moo2k, 10.11.2007 в 07:06. |
#8
|
||||
|
||||
TCustomTag и TID3v2Info-Компонент то какой?
|