如何仅从mp3文件下载元数据



我正在制作一个从远程服务器播放音乐的应用程序,我希望能够按作者/专辑/年份等进行排序。AFAIK唯一的方法是读取元数据,但我不想为了读取元数据而下载整个音频文件,有没有办法将它们分离并只下载元数据?

顺便说一句。我将webdav_client用于flutter,它使用dio作为后端,因此我们将非常感谢具体的说明。TY

首先,您可以通常通过使用ranged请求来请求某个字节范围。这取决于服务器行为。大多数服务器都支持它,但很多服务器不支持。

接下来,您需要弄清楚您想要的ID3标记的位置。ID3的某些版本位于文件的前面。有些在后面。因此,您可能应该请求文件的前128 KB左右,并搜索ID3数据,同时获取Length响应标头。然后,如果你一开始没有找到你的标签,你可以请求最后128 KB或其他文件,然后在那里搜索。

大多数MP3文件都不是很大,而且带宽通常很充足。根据这个项目的大小和范围,您可能会发现只下载整个文件更有效。

我认为如果不先下载整个文件,就不可能只读取音频文件的ID3元数据(在开头或结尾(。

一种想法是在服务器端提取这些信息,并将其与音频文件本身分开提供。要做到这一点,您需要一个适用于您的平台的知名提取工具。然而,如果你需要下载数百或数千个配套文件,我不确定这样一个系统的可靠性。

最新更新