如何获取MP3文件比特率? (DELPHI)

时间:2011-04-22 16:41:39

标签: delphi mp3 bitrate

如何获取MP3档案的bitrate

3 个答案:

答案 0 :(得分: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.

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

您可以从here

中找到更详细的信息

答案 1 :(得分:4)

查看Read MP3 info中的TAudioFile.GetMp3Info(只是忽略德语说明)

答案 2 :(得分:3)

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

这种格式在这里定义:

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

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

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

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