Как получить MP3 файл с битрейтом?(Delphi) - PullRequest
7 голосов
/ 22 апреля 2011

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

Ответы [ 3 ]

5 голосов
/ 23 апреля 2011

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

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

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

4 голосов
/ 23 апреля 2011

Посмотрите на TAudioFile.GetMp3Info в Прочитайте информацию MP3 (просто игнорируйте немецкое описание)

3 голосов
/ 23 апреля 2011

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

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

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

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

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

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

...