Как получить битрейт файла MP3? (Дельфи)

Как я могу получить bitrate MP3-файла ?

3 ответов


посмотреть TAudioFile.GetMp3Info на читать MP3 info (просто игнорируйте немецкое описание)


битрейт 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.

обратите внимание, что это только находит битрейт первого кадра.

вы можете найти более подробную информацию здесь


вам нужно будет создать структуру Delphi для чтения формата MP3-файла.

этот формат определен здесь:

http://en.wikipedia.org/wiki/MP3#File_structure

эта ссылка: http://www.3delite.hu/Object%20Pascal%20Developer%20Resources/id3v2library.html

похоже, содержит код Delphi для чтения формата.

в основном, каждый файл имеет формат, и, как правило, вам нужно создайте структуру данных для сопоставления этого формата. Затем вы используете код чтения файла для сопоставления данных в файле поверх структуры, определяющей формат файла.