1

我正在尝试从 mp3 中加载 jpg(我在 Flash 中执行此操作,但这既不是这里也不是那里),我已经在十六进制编辑器中打开了一些 MP3,而标签的其余部分是很清楚,图像部分是一个谜。有一个标签“image/jpeg”,但随后我期望图像的字节长度或用于划分图像结尾的字符串键,但我什么也没看到,标签上的文档完全没有帮助。

希望得到一些关于我在这里寻找的指导。惊讶于结果是多么不直观!

TIA

4

2 回答 2

1

虽然我通常提倡 msw 的解决方案,但该站点似乎没有 Flash 库。但是,它确实具有ID3v2 规范。如果您查看第 4., 部分ID3v2 frame overview,您会看到帧头包含帧的大小,不包括标题。我相信可以安全地假设可以从那里计算图像大小。

PD:我假设你知道 ID3v2 标签是如何工作的。如果你不这样做,我建议你至少粗略地看一下规范。基本上,有一个标题,一个扩展标题,然后是一个或多个包含标签数据的帧(每个数据一帧),最后是填充。

编辑:出于测试目的,我在十六进制编辑器中打开了一个带有已知标签数据的 MP3。找到一个名为 的帧APIC,将指定字节数复制到一个新文件中并保存为test.jpg. 没有完全奏效。

进一步挖掘,我找到了frame spec。具体来说,第 4.14 节attached picture描述了帧的各种“子标题”(1 字节文本编码、零分隔的 mimetype、1 字节图片类型和零分隔描述)。因此,我从数据中删除了该信息,并将剩余部分复制到一个新的 jpg 文件中,Windows 能够显示该文件。

因此,该技术是:

  • 从帧头获取帧大小。
  • 解析帧子标题的帧开头并将其删除。(4 到无限字节之间的任意位置)
  • 根据剩余字节数计算图像大小。
于 2011-04-16T05:59:12.213 回答
0

除非你喜欢痛苦,否则不要重新发明那个轮子。这只是为您工作的图书馆的一个来源。

于 2011-04-16T05:47:54.683 回答