【问题标题】:How to determine .mp3 bit rate without downloading it?如何在不下载的情况下确定 .mp3 比特率?
【发布时间】:2012-01-28 15:39:52
【问题描述】:

我有一个网络上的 .mp3 文件列表,我想获得最高质量的文件。 多媒体文件的质量等于它们的比特率。

比特率本身应该在文件的标题中找到。如果没有,也可以使用音轨的长度。 (文件大小/轨道长度 = 比特率)

如果我在本地拥有这些文件,这些事情会很容易,但我想通过 HTTP 获取这些信息并确定哪个文件的质量最高。

我可以从 HTTP 标头中获取音轨的长度吗?如果没有,是否可以仅获取描述长度/比特率的位而不是下载整个文件?

我正在用 python 编写代码,但问题很笼统,所以我没有将其标记为 python 问题。

【问题讨论】:

    标签: mp3 bitrate


    【解决方案1】:

    假设远程服务器运行良好,您可以向文件发出HEAD 请求并检查Content-Length header field 的内容。它不会为您提供轨道长度或比特率,但您可以获得文件的大小。

    编辑:MP3 由多个帧组成,每个帧可以具有不同的比特率 (VBR)。轨道长度是根据每个帧的比特率计算的,而不是存储的长度本身。如果您想要可靠的比特率,您需要两个获取整个文件并获取每个帧的比特率。可以抓取文件的前几 KB 并从第一帧读取比特率,但这并不总是在文件中的同一点(例如,由于 ID3 标签的位置等)。

    【讨论】:

    • 这给我带来了内容的文件大小。我想以秒为单位获取音轨的长度,而不是以字节为单位。
    • MP3 可以包含告诉您比特率的标题/标签信息,但不一定包含文件中使用的实际比特率。当您考虑到它们也可以是可变比特率时,它会变得更加复杂。如果文件是 CBR,那么 frame header 可能是开始查找的地方。
    • ID3v2 标签是可选的,可能有一个可选的TLE 或TLEN 字段,其中包含音频持续时间。此外,第一音频帧可以是隐藏在无声音频中的元数据帧。对于 CBR 文件,这可能是 Info,对于 VBR 文件,可能是 Xing 或 VBRI。如果它是 CBR 文件,您可以计算持续时间,但如果它是 VBR 文件,则不能。对于 VBR 文件,您必须将所有音频帧的持续时间相加,如果它是元数据帧,则减去第一帧。
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2011-11-19
    • 2016-09-27
    • 2017-06-28
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多