【问题标题】:How do I calculate the duration of an MP3 file in a remote location without downloading the entire file?如何在不下载整个文件的情况下计算远程位置的 MP3 文件的持续时间?
【发布时间】:2012-06-14 02:14:30
【问题描述】:

我经营一个独立的音乐网站。我们有一个巨大的 MP3 文件存储库,存储在我们的 Amazon S3 CDN 上。我们从不在乎在上传时将音频的持续时间存储在数据库中。

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

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

【问题讨论】:

  • 我认为这里已经回答了:stackoverflow.com/questions/2602612/…
  • @sputnik 我不是在谈论以字节为单位的文件大小。我说的是 MP3 文件中音频的长度,单位是分秒。

标签: php mp3 duration


【解决方案1】:

几乎所有 mp3 文件的开头都有 Xing/VBRi 帧,可用于计算文件的时长,下载量很少。

在 PHP 中你可能会:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多