如何从mp3文件中提取专辑封面而不下载整个文件

时间:2011-11-14 13:40:35

标签: c++ mp3 gstreamer taglib

我正在使用TabLib进行提取,但我需要知道我应该从mp3文件下载多少字节,以便能够提取TagLib。

我看过mp3规格,但我没有发现任何相关内容。

2 个答案:

答案 0 :(得分:2)

在99%的情况下,如果你先拉下前10个字节,你就会得到ID3v2标头,其中最后4个字节将是ID3v2标签的大小,它将包含封面图片。

ID3v2大小是“同步安全整数”,但TagLib有一个函数将其解码为正常整数:

TagLib::ID3v2::SynchData::toUInt(const ByteVector &data)

所以,基本上算法是:

  • 抓住前10个字节
  • 完整性检查以“ID3”开头的那些字节
  • 读取那10个字母的最后4个字节并通过上面的函数传递它们以获取ID3v2标记长度
  • 从流中获取更多其他数据
  • 将该数据块传递给TagLib
  • 提取封面艺术

答案 1 :(得分:1)

mp3规范实际上没有歌曲名称或专辑封面等元数据。它是id3的一部分,通常位于文件的末尾。