Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-25855
Алексей
2004-02-17 14:01
2004.03.09
Как сделать так


7-25958
Davey
2003-12-19 15:53
2004.03.09
Срочно!!!!!! SOS!!! ??D: Windows winlogon.exe ??????????


1-25750
OlimPer
2004-02-26 17:39
2004.03.09
mainmenu


3-25718
Senator
2004-02-11 13:17
2004.03.09
Построение дерева


3-25687
harisma
2004-02-11 11:08
2004.03.09
Подстановка значентй в DBGride





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский