【发布时间】:2011-04-16 05:15:47
【问题描述】:
我正在尝试从 mp3 中加载 jpg(我在 Flash 中执行此操作,但这既不存在也不存在),并且我已经在十六进制编辑器中打开了一些 MP3,而其余的标签很清楚,图像部分是个谜。有一个标签“image/jpeg”,但随后我期望图像的字节长度或用于划分图像结尾的字符串键,但我什么也没看到,标签上的文档完全没有帮助。
希望得到一些关于我在这里寻找什么的指导。对结果的不直观感到惊讶!
TIA
【问题讨论】:
我正在尝试从 mp3 中加载 jpg(我在 Flash 中执行此操作,但这既不存在也不存在),并且我已经在十六进制编辑器中打开了一些 MP3,而其余的标签很清楚,图像部分是个谜。有一个标签“image/jpeg”,但随后我期望图像的字节长度或用于划分图像结尾的字符串键,但我什么也没看到,标签上的文档完全没有帮助。
希望得到一些关于我在这里寻找什么的指导。对结果的不直观感到惊讶!
TIA
【问题讨论】:
虽然我通常会提倡 msw 的解决方案,但该网站似乎没有 Flash 库。但是,它确实有ID3v2 specification。如果您查看第 4 节,ID3v2 frame overview,您会看到帧头包括帧的大小,而不包括头。我相信可以安全地假设图像大小可以从那里计算出来。
PD:我假设您知道 ID3v2 标签的工作原理。如果你不这样做,我建议你至少粗略地看一下规范。基本上,有一个标头,一个扩展标头,然后是一个或多个包含标签数据的帧(每个数据一帧),最后是填充。
编辑:出于测试目的,我在十六进制编辑器中打开了一个带有已知标签数据的 MP3。找到一个名为APIC的帧,将指定字节数复制到一个新文件中并保存为test.jpg。不太好用。
进一步挖掘,我找到了frame spec。具体来说,第 4.14 节,attached picture,描述了帧的“子标题”(1 字节文本编码、零分隔的 mimetype、1 字节图片类型和零分隔描述)。所以我从数据中删除了这些信息,并将剩余部分复制到一个新的 jpg 文件中,Windows 能够显示该文件。
因此,技术是:
【讨论】:
除非你喜欢痛苦,否则不要重新发明那个轮子。这是 but one source for libraries 为您工作。
【讨论】: