Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать продолжительность звукового файла?


NaRuTo ©   (2009-05-21 07:50:00) 

Здраствуйте, Как узнать продолжительность звукового файла в секундах? Не прибегая к библиотеке Bass.Dll. Заранее спасибо.


Palladin   (2009-05-21 08:27:00) [1]

Заголовок там не TAG+, а просто TAG, значит уже 3 символа. Ищи дальше несоответствия.


Palladin   (2009-05-21 08:25:00) [2]

Эксперимент показал Seek(MFile,FileSize(MFile) - 127);
Где 100 лишних байт в заголовке, хз. Можешь открыть в фаре mp3 файл и убедится сам.


CodeMaster   (2009-05-21 08:07:00) [3]

Buffer: array[1..227] of Char


Palladin   (2009-05-21 08:05:00) [4]

как Buffer описан?


CodeMaster   (2009-05-21 08:01:00) [5]

заголовок  4  «TAG+»
название  60  Ещё 60 байт с названием (всего получается 90)
артист  60  Ещё 60 байт с исполнителем
альбом  60  Ещё 60 байт с названием альбома
скорость музыки  1  Чем больше число, тем выше скорость («0» обозначает неизвестное значение)
жанр  30  30-символьная строка
время начала  6  время в формате mmm:ss
время конца  6  время в формате mmm:ss


Palladin   (2009-05-21 08:00:00) [6]

А что там по ссылке? Как структура описана?


CodeMaster   (2009-05-21 07:59:00) [7]

Всё равно показывает закорючки


Palladin   (2009-05-21 07:56:00) [8]

Ишь ты... Янус...
packed в record добавь...


Palladin   (2009-05-21 07:53:00) [9]

если соответствующая информация есть в заголовке, то прочитать ее


CodeMaster   (2009-05-21 07:53:00) [10]

Читал на
http://ru.wikipedia.org/wiki/ID3_%28%D0%BC%D0%B5%D1%82%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%29#.D0.A1.D1.82.D1.80.D1.83.D0.BA.D1.82.D1.83.D1.80.D0.B0

То что каким-то образом перед ID3V1 хранится расширенная информация 227 Байт. Пытался прочитать эту информацию, но ничего не получается :
type
 TMP3Title = record
   TAG: String[4];
   Title: String[60];
   Artist: String[60];
   Albom: String[60];
   Bitrate: String[1];
   Genre: String[30];
   TimeBegin: String[6];
   TimeEnd: String[6];

end;
.......
var
Mp3Title: TMp3Title;
MFile: File;
begin
 AssignFile(MFile,FileName);
 Reset(MFile,1);

 Seek(MFile,FileSize(MFile) - 227);

 BlockRead(MFile,Buffer,SizeOf(Buffer));

 with Mp3Title do begin
   TAG:= Copy(Buffer,1,4);
   Title:= Copy(Buffer,5,60);
 end;
........

Вывожу Mp3Title в какой-нибудь текстовый диалог тот же ShowMessage - появляются закорючки заместо обычных букв.


Наверх

Титульная страница Поиск, карта сайта Написать письмо