如何在Delphi中获取MP3/wav音频文件的持续时间(以分钟和秒为单位)?

最佳答案

您可以通过将文件大小除以比特率来计算持续时间。您可以从其中一个帧头获得比特率。当然,这不适用于可变速率的MP3,因为您可以为每个帧设置不同的速率。

使用Header Layout(只有四个字节):

  • 在流
  • 中打开MP3
  • 通过阅读直到找到第一帧标题的开头
    查找同步 header ,该 header 具有设置为1的11个连续位。
    以前是12,但经过调整后允许使用MPEG 2.5版。
  • 确定MPEG版本ID。为了找到比特率,V2.5与V2
  • 相同
  • 确定图层描述
  • 读取比特率索引
  • 使用MPEG版本,层描述和比特率索引,从链接头引用
  • 中的比特率索引表确定实际比特率
  • 将文件大小(以千比特为单位((8 *大小以字节为单位)/1000)除以比特率,以获取持续时间(以秒为单位)

  • 我找不到Delphi示例,但这是一个使用此技术作为参​​考的C# implementation。请参见getLengthInSeconds方法。

    关于delphi - MP3/wav音频文件的持续时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1065086/

    10-12 00:19
    查看更多