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

#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 для чтения формата.

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