2012-01-28 142 views
3

我在网上有一个.mp3文件列表,我想获得最高质量的文件。 多媒体文件的质量等于它们的比特率。如何确定.mp3比特率而不下载它?

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

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

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

我在python中编写代码,但问题是相当一般的,所以我不把它标记为python问题。

回答

2

假设远程服务器运行良好,您可以向文件发出HEAD请求并检查Content-Length header field的内容。它不给你跟踪长度或比特率,但你可以得到文件的大小。

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

+0

这给我带来了内容的文件大小。我想以秒为单位获取音轨的长度,而不是以字节为单位。 – iTayb 2012-01-28 15:47:49

+0

MP3s可以包含标题/标签信息,告诉你比特率,但它不一定包含文件中使用的实际比特率。当你考虑到它们也可以是可变比特率时,它会变得更加复杂。如果文件是CBR,那么也许[frame header](http://www.mp3-tech.org/programmer/frame_header.html)是开始寻找的地方。 – cmbuckley 2012-01-28 15:53:12