Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Get Klb/s - Help!

Автор: Артемий2 10.08.2006 1:00

У меня небольшая проблема!Мне нужно чтобы на TLabel отображалось скоко клилобит в секунду данный файл!(TMediaPlayer)!
dry.gif

Автор: volvo 10.08.2006 1:08

У тебя какой формат файла? Если mp3, то я где-то уже выкладывал, как считать содержимое его тегов, поищи по форуму. Если другой - говори, какой, придется искать, где именно хранится эта информация...

Автор: Гость 10.08.2006 17:22

Мне нужно чтобы универсально к любому формату!(Ну кроме там таких как 3GP,AMR и других мобильных форматов)

Автор: Артемий2 10.08.2006 17:24

Извини "гость" это я!

Автор: volvo 10.08.2006 17:27

Уууу... Тогда я - пас. Это тебе не Compound Files, у которых это хранится в альтернативном потоке данных, и не MP3, где все хранится в ELIF тегах. "Универсально" - понятие растяжимое... Очень растяжимое. И малореальное...

Автор: Артемий2 11.08.2006 15:49

Мне нужно MP3 и WAV!

Автор: volvo 12.08.2006 0:19

Цитата(Артемий2 @ 11.08.2006 11:49)
Мне нужно MP3...

C MP3 помогу. Вот такой код работает у меня (20 правильных значений BitRate на 20 файлах), но, возможно, это работает НЕ всегда. Погоняй код:

// В s передается имя файла MP3
procedure TForm1.ReadMp3Info(const s: string);
var
f: File;
buffer: array[0 .. 31] of byte;
Lay, mpeg, btr: byte;

const
bitRateTable: array[0 .. 15, 0 .. 4] of integer = (
( 0, 0, 0, 0, 0 ),
( 32000, 32000, 32000, 32000, 8000 ),
( 64000, 48000, 40000, 48000, 16000 ),
( 96000, 56000, 48000, 56000, 24000 ),
( 128000, 64000, 56000, 64000, 32000 ),
( 160000, 80000, 64000, 80000, 40000 ),
( 192000, 96000, 80000, 96000, 48000 ),
( 224000, 112000, 96000, 112000, 56000 ),
( 256000, 128000, 112000, 128000, 64000 ),
( 288000, 160000, 128000, 144000, 80000 ),
( 320000, 192000, 160000, 160000, 96000 ),
( 352000, 224000, 192000, 176000, 112000 ),
( 384000, 256000, 224000, 192000, 128000 ),
( 416000, 320000, 256000, 224000, 144000 ),
( 448000, 384000, 320000, 256000, 160000 ),
( -1, -1, -1, -1, -1 )
);

begin
assignfile(f, s);
reset(f, 1);
blockread(f, buffer[0], 32);

Lay := (buffer[1] shr 1) and 3;
mpeg := (buffer[1] shr 3) and 3;

case mpeg of
// mpg-1.0
3: case lay of
3: mpeg := 0;
2: mpeg := 1;
1: mpeg := 2;
end;

// mpg-2.0
0, 2:
case lay of
3: mpeg := 3;
2, 1: mpeg := 4;
end;
end;

btr := (buffer[2] shr 4) and $0F;

// Записываем BitRate в Edit
edit1.Text := 'Bitrate: ' + inttostr(bitRateTable[btr, mpeg]);

closefile(f);
end;

Источник информации: http://www.mp3-tech.org/programmer/frame_header.html

P.S.
С Wav посмотрю позже, что можно придумать...