MP3/wav音频文件的持续时间

Att*_*lah 5 delphi audio mp3

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

Bru*_*Gee 7

您可以通过将文件大小除以比特率来计算持续时间.您可以从其中一个帧头获取比特率.当然,这对于可变速率的MP3不起作用,在每种帧中你可以有不同的速率.

使用标头布局(它只有四个字节):

  1. 在流中打开MP3

  2. 通过读取找到第一个帧头的开头,直到找到同步头,其中有11个连续位设置为1.这曾经是12,但它被调整为允许MPEG版本2.5.

  3. 确定MPEG版本ID.为了找到比特率,V2.5与V2相同

  4. 确定图层描述

  5. 读取比特率指数

  6. 使用MPEG版本,层描述和比特率索引,从链接头参考中的比特率索引表确定实际比特率

  7. 将文件大小以千比特((8*大小,以字节为单位)/ 1000)除以比特率,以秒为单位获得持续时间

我找不到Delphi示例,但这是一个使用此技术进行参考的C#实现.请参阅getLengthInSeconds方法.