如何以最少的下载量获取远程MP3的持续时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以最少的下载量获取远程MP3的持续时间相关的知识,希望对你有一定的参考价值。

我正在尝试获取100,000个远程mp3文件的持续时间。我不想下载每个文件,因为这样很容易达到我的数据上限。

如何使用最小下载大小的python获取mp3文件的持续时间。

答案

[不幸的是,MP3文件没有每个文件头的全长,而是每个帧都有一个头。但是,对于恒定比特率的MP3来说,这不是一个大问题,因为您既知道帧的长度,又知道文件的长度(即来自HTTP Content-Length标头)。

假设文件是​​恒定比特率,您应该只能下载文件的前4个字节。这将为您提供MPEG版本/层,以及比特率(对照MPEG规范进行表查找,记录在here中)。

知道比特率,您可以根据文件长度对时间进行粗略估算,也可以通过计算actual

帧长度(以字节为单位)来进行细化。这样可以为您提供帧数,因此可以减去要减去的字节数(因为它们是帧头,并且不提供任何有用的数据)。

另一方面,如果您拥有可变的比特率文件,那么您就不走运了。您需要阅读每一帧以获得对文件长度的真实估计。

另一答案

使用HEAD请求来获取文件的元数据。

以上是关于如何以最少的下载量获取远程MP3的持续时间的主要内容,如果未能解决你的问题,请参考以下文章

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

如何获取mp3文件的持续时间

查找流 (mp3) 信息(持续时间、比特率)

上传到 Firebase 存储时如何使用 Cloud Functions for FIrebase 获取 mp3 文件的持续时间

如何从多个音频文件中获取总音频持续时间

小程序各种功能代码片段整理---持续更新