#delphi #mp3 #bitrate
#delphi #mp3 #битрейт
Вопрос:
как я могу получить bitrate
из MP3-файла?
Комментарии:
1. mp3 может быть с динамическим битрейтом…
2. Что вы имеете в виду? итак, как вы можете увидеть
bitrate
свойство в диалоговом окне свойств файлов mp3 в Windows?3. Kermia — для VBR (переменный битрейт) лучшее, что вы можете сделать, это взять размер потока данных mp3 и разделить его на длительность звука в секундах и умножить на 8 (чтобы преобразовать байты в биты). Другими словами, это был бы средний битрейт.
Ответ №1:
Битрейт MP3 хранится в 3-м байте заголовка фрейма, поэтому вариантом было бы выполнить поиск первого байта со значением 255 (теоретически, не должно быть других байтов со всеми битами, установленными в 1 до этого), а битрейт должен быть сохранен через два байта после этого. Следующий код выполняет это:
program Project1;
{$APPTYPE CONSOLE}
uses
Classes, SysUtils;
const
BIT_RATE_TABLE: array [0..15] of Integer =
(0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0);
var
B: Byte;
begin
with TFileStream.Create(ParamStr(1), fmOpenRead) do begin
try
Position := 0;
repeat
Read(B, 1);
until B = 255;
Position := Position 1;
Read(B, 1);
Writeln(BIT_RATE_TABLE[B shr 4]);
finally
Free;
end;
end;
end.
Обратите внимание, что при этом определяется битрейт только первого кадра.
Вы можете найти более подробную информацию здесь
Ответ №2:
Взгляните на TAudioFile.GetMp3Info
в Read MP3 info (просто игнорируйте немецкое описание)
Комментарии:
1. Большое вам спасибо, именно этого я и хотел.
Ответ №3:
Вам нужно будет создать структуру Delphi для чтения формата файла MP3.
Этот формат определен здесь:
http://en.wikipedia.org/wiki/MP3#File_structure
Эта ссылка:http://www.3delite.hu/Object Pascal Developer Resources/id3v2library.html
похоже, что он также содержит код Delphi для чтения формата.
В принципе, у каждого файла есть формат, и обычно вам нужно создать структуру данных для сопоставления этого формата. Затем вы используете код чтения файла для сопоставления данных в файле поверх структуры, которая определяет формат файла.