如何获取 MP3 文件的比特率? (德尔福)

Posted

技术标签:

【中文标题】如何获取 MP3 文件的比特率? (德尔福)【英文标题】:How to get MP3 file Bitrate ? (Delphi) 【发布时间】:2011-04-22 16:41:38 【问题描述】:

如何获取 MP3 文件的bitrate

【问题讨论】:

mp3 可以是动态比特率... 你是什么意思?那么如何在windows的mp3文件的属性对话框中看到bitrate属性呢? 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.

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

您可以在here找到更多详细信息

【讨论】:

【参考方案2】:

看看Read MP3 info中的TAudioFile.GetMp3Info(忽略德语描述)

【讨论】:

非常感谢,这正是我想要的。【参考方案3】:

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

该格式在此处定义:

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

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

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

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

【讨论】:

以上是关于如何获取 MP3 文件的比特率? (德尔福)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中获取现有 MP3 或 AAC 的比特率?

如何在可可中获取音频文件的比特率

使用 ffmpeg 批量降低 mp3 音频文件的比特率和大小

蹩脚的mp3改变比特率cpp

powershell Get-MetaData旨在从文件中获取元数据......最初用于查找.mp3的比特率。

查找流 (mp3) 信息(持续时间、比特率)