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

问题描述 投票:1回答:1

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

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

python mp3
1个回答
1
投票

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

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.