php - 如何在不下载整个文件的情况下计算远程位置的 MP3 文件的持续时间?

标签 php mp3 duration

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

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

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

最佳答案

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

在 PHP 中你可能会:

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

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

关于php - 如何在不下载整个文件的情况下计算远程位置的 MP3 文件的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10975620/

相关文章:

php - 使用 PHPExcel 合并单元格值 - PHP

java - 需要样本代码来捕获mp3格式的音频并使用Java播放

c# - 如何在 C# 中将章节元数据嵌入到 mp3 文件中?

datetime - Groovy:TimeDuration - 自定义输出格式

ios - 在iOS上设置默认 session 长度?

sql - 如何计算从现在开始的 'x'工作时间? (首选 sql 或 postgresql 9.3)

PHP trim/rtrim/ltrim VS 正则表达式

php - 使用php读取文件中的一行

php - bcrypt 哈希值应该存储在主用户表中还是它自己的表中?

json - 从每首歌中获取 HTTP MP3 流