7

我怎样才能得到bitrate一个 MP3 文件?

4

3 回答 3

5

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.

请注意,这只找到第一帧的比特率。

您可以从这里找到更详细的信息

于 2011-04-23T01:06:47.397 回答
4

看看Read MP3 infoTAudioFile.GetMp3Info(忽略德语描述)

于 2011-04-23T07:23:49.093 回答
3

您必须创建一个 Delphi 结构来读取 MP3 文件格式。

该格式在此处定义:

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

此链接:http ://www.3delite.hu/Object%20Pascal%20Developer%20Resources/id3v2library.html

似乎也包含用于读取格式的 Delphi 代码。

更简单地说,每个文件都有一种格式,通常您需要创建一个数据结构来映射该格式。然后,您使用文件读取代码将文件中的数据映射到定义文件格式的结构之上。

于 2011-04-23T00:41:43.727 回答