如何以最少的下载量获取远程MP3的持续时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以最少的下载量获取远程MP3的持续时间相关的知识,希望对你有一定的参考价值。
我正在尝试获取100,000个远程mp3文件的持续时间。我不想下载每个文件,因为这样很容易达到我的数据上限。
如何使用最小下载大小的python获取mp3文件的持续时间。
答案
[不幸的是,MP3文件没有每个文件头的全长,而是每个帧都有一个头。但是,对于恒定比特率的MP3来说,这不是一个大问题,因为您既知道帧的长度,又知道文件的长度(即来自HTTP Content-Length标头)。
假设文件是恒定比特率,您应该只能下载文件的前4个字节。这将为您提供MPEG版本/层,以及比特率(对照MPEG规范进行表查找,记录在here中)。
知道比特率,您可以根据文件长度对时间进行粗略估算,也可以通过计算actual
帧长度(以字节为单位)来进行细化。这样可以为您提供帧数,因此可以减去要减去的字节数(因为它们是帧头,并且不提供任何有用的数据)。另一方面,如果您拥有可变的比特率文件,那么您就不走运了。您需要阅读每一帧以获得对文件长度的真实估计。
另一答案
使用HEAD
请求来获取文件的元数据。
以上是关于如何以最少的下载量获取远程MP3的持续时间的主要内容,如果未能解决你的问题,请参考以下文章
上传到 Firebase 存储时如何使用 Cloud Functions for FIrebase 获取 mp3 文件的持续时间