从在线mp3文件读取元数据

2 投票
2 回答
1515 浏览
提问于 2025-04-16 14:26

我想要读取一个在线MP3文件的比特率,比如说这个链接,最好是不需要把整个文件下载下来。

我发现ffmpeg可以做到这一点,比如可以这样使用:

ffmpeg -i http://physics.ujep.cz/~mmaly/mp3/Mozart/Mass_in_C_Minor_New_by_Levin/sbory_vyssi_kvalita/01_Kyrie.mp3

但是我找不到一个方便的方法来实现这个功能。(pyffmpeg需要一个C语言编译器和Cython,而且每次我解决一个错误后,它又会出现新的错误信息)

如果有人有任何建议、链接或者知道哪里可以找到更多的想法,我会非常感激!

2 个回答

1

我觉得id3标签是存储在mp3文件开头的。你可能首先需要了解一下mp3文件格式,这样你才能知道数据是怎么存储的。然后你可以开始下载这个文件,当你下载到足够的数据后,就可以关闭连接来读取比特率。

这里有一个关于文件格式的说明链接:http://www.mpgedit.org/mpgedit/mpeg_format/MP3Format.html

你只需要下载大约前30个比特的数据,然后解析出来就可以了。其实并不难。

0

原来,如果你知道音轨的长度,就可以用下面的方法来估算比特率:

u = urllib2.urlopen(url)

meta = u.info()
file_size = int(meta.getheaders('Content-Length')[0])

estimated_bitrate = file_size/length_secs/1000*8

为了事后检查,我使用了mutagen这个工具。

撰写回答