我正在尝试获取100,000个远程mp3文件的持续时间。我不想下载每个文件,因为这样很容易达到我的数据上限。
如何使用最小下载大小的python获取mp3文件的持续时间。
[不幸的是,MP3文件没有每个文件头的全长,而是每个帧都有一个头。但是,对于恒定比特率的MP3来说,这不是一个大问题,因为您既知道帧的长度,又知道文件的长度(即来自HTTP Content-Length标头)。
假设文件是恒定比特率,您应该只能下载文件的前4个字节。这将为您提供MPEG版本/层,以及比特率(对照MPEG规范进行表查找,记录在here中)。
知道比特率,您可以根据文件长度对时间进行粗略估算,也可以通过计算actual
帧长度(以字节为单位)来进行细化。这样可以为您提供帧数,因此可以减去要减去的字节数(因为它们是帧头,并且不提供任何有用的数据)。另一方面,如果您拥有可变的比特率文件,那么您就不走运了。您需要阅读每一帧以获得对文件长度的真实估计。
使用HEAD
请求来获取文件的元数据。