Форум: "Media";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
ВнизОчень срочный вопрос! Mp3->Rate Найти похожие ветки
← →
Михайлов Антон (2003-10-31 09:25) [0]Мастера, как по имени файла (Например "C:\MyMusic\Atb-The Summer.mp3") узнать его бит рейт (например 128 kbps) ?????
Это очень срочно! Заранее спасибо!
← →
Михайлов Антон (2003-10-31 10:16) [1]Воспрос был настолько срочный, что аж я сам на него ответил :)
кому нада, пользуйтесь:
===================
{Получение бит-рейта}
Function GetBitRate(filename:string):integer;
const
bitraten:array[1..2,1..3,1..14] of word =
(((32,64,96,128,160,192,224,256,288,320,352,384,416,448),
(32,48,56,64,80,96,112,128,160,192,224,256,320,384),
(32,40,48,56,64,80,96,112,128,160,192,224,256,320)),
((32,48,56,64,80,96,112,128,144,160,176,192,224,256),
(8,16,24,32,40,48,56,64,80,96,112,128,144,160),
(8,16,24,32,40,48,56,64,80,96,112,128,144,160)));
var Layer,MPEGVer: Byte;
f:file;
s1,s2,s3,x:byte;
begin
if fileexists(filename) then
begin
assignfile(f,filename);
reset(f,1);
blockread(f,s1,1);
blockread(f,s2,1);
blockread(f,s3,1);
closefile(f);
if s2 and 16 = 16 then mpegver:=1 else mpegver:=2;
{Layer}
if (s2 and 32 = 32) and (s2 and 64 <> 64) then layer:=1;
if (s2 and 32 = 32) and (s2 and 64 = 64) then layer:=3;
if (s2 and 32 <> 32) and (s2 and 64 = 64) then layer:=2;
x:=0;
if s3 and 128 = 128 then x:=x+8;
if s3 and 64 = 64 then x:=x+4;
if s3 and 32 = 32 then x:=x+2;
if s3 and 16 = 16 then x:=x+1;
Result:=bitraten[mpegver,layer,x];
end else
Result:=0;
end;
{Получение частоты файла}
Function GetFreq(filename:string):integer;
const
freq:array[1..2,0..2] of word =((44100,48000,32000),(22050,24000,16000));
var Layer,MPEGVer: Byte;
f:file;
s1,s2,s3,x:byte;
begin
If fileexists(filename) then
Begin
assignfile(f,filename);
reset(f,1);
blockread(f,s1,1);
blockread(f,s2,1);
blockread(f,s3,1);
closefile(f);
if s2 and 16 = 16 then mpegver:=1 else mpegver:=2;
if (s2 and 32 = 32) and (s2 and 64 <> 64) then layer:=1;
if (s2 and 32 = 32) and (s2 and 64 = 64) then layer:=3;
if (s2 and 32 <> 32) and (s2 and 64 = 64) then layer:=2;
x:=0;
if s3 and 8 = 8 then x:=x+1;
if s3 and 4 = 4 then x:=x+2;
Result:=freq[mpegver,x];
end else
Result:=0;
end;
← →
Думкин (2003-10-31 10:37) [2]Хорошо, только вопрос был:
> как по имени файла (Например "C:\MyMusic\Atb-The Summer.mp3")
> узнать его бит рейт
А ты не по имени узнаешь, а в файле ковыряешь, - так не честно. :-)
← →
Makhanev A.S. (2003-10-31 11:07) [3]
> Михайлов Антон © (31.10.03 10:16) [1]
Лучше используй TMPEGaudio class J.Faul"я.
А то, к примеру, как ты прочтешь битрейт,если в мп3 файле есть id3v2 тэг*?
P.S.: id3v2 тэг прописывается в начале файла и надо вычислять его длину, чтобы сместиться на нужный блок для чтения MPEG info.
← →
Михайлов Антон (2003-10-31 20:42) [4]Удалено модератором
← →
Михайлов Антон (2003-11-01 00:32) [5]Ничё не придумал :( ЛЮДИ, ПОМОГОТЕ ПОЖАЛСТА!!!!
← →
wicked (2003-11-01 01:35) [6]может здесь -
http://www.dv.co.yu/mp3list/mpeghdr.htm ?...
← →
Михайлов Антон (2003-11-01 20:30) [7]>>wicked
Очень познавательно, но мне это не помогла :(
Ну всётаки, может есть компонент, который умеет получать БитРейт мр3 файла?????
Дайте линк или совет или дайте функцию ;)
← →
Makhanev A.S. (2003-11-02 17:08) [8]
> Михайлов Антон © (01.11.03 20:30) [7]
Ты первый раз в интернете???
Я ж тебе написал про TMPEGaudio class.
Лезешь на torry.net, и берешь его отсюда:
http://www.torry.net/audio.htm
← →
nevalex (2003-11-04 09:16) [9]есть более простой способ
правда необходимо использовать TmediaPlayer
var fmp3:TFileStream;
sz:integer;
...
begin
fmp3:=TFileStream.Create("c:\ramstein.mp3", fmOpenread);
try
sz:=fmp3.Size;
finally
fmp3.free;
mediaplayer2.filename:="c:\ramstein.mp3";
mediaplayer2.Open;
id3form.Memo1.Lines.Add("Битрэйт: "+inttostr(round(((sz*8/(mediaplayer2.Length/1000))/1000))+" Кбит/с");
mediaplayer2.Close;
MediaPlayer тут необходим только для определения длины в секундах
← →
Makhanev A.S. (2003-11-06 00:26) [10]
> nevalex © (04.11.03 09:16) [9]
1) Боюсь, что метод с TMediaPlayer"ом будет долго выполняться.
2) Метод вычисления битрейта через длину файла некорректен. Это примерная длина, но не точная.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c