如何在不下载整个文件的情况下计算远程位置MP3文件的长度?

时间:2012-06-11 06:56:16

标签: php mp3

我经营着一个独立的音乐网站。我们的Amazon S3 CDN上存有大量MP3文件存储库。我们从不关心在上传时将音频大小存储在数据库中。

现在,我需要在几分钟和几秒内完成每个文件的长度。我不确定是否在所有文件中都设置了TLEN ID3信息,但我知道所有文件都是128kbps比特率。

由于我的mp3数量非常大,我不想下载整个文件来计算它的音频长度。我想知道是否有更聪明的方法来做到这一点。

1 个答案:

答案 0 :(得分:4)

几乎所有的mp3文件都在文件的开头有Xing / VBRi框架,只需很少的下载就可以用来计算文件的持续时间。

在PHP中你可能会:

  • 读取前10个字节以获取id3部分的大小
  • 读取n个字节,其中n是id3部分长度
  • 读取Xing / VBRi frame
  • 所需的字节数
  • 解析并关闭连接

阅读http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header#XINGHeader,了解如何解析Xing和VBRi框架。