![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать продолжительность звукового файла?
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 - появляются закорючки заместо обычных букв.