我正在尝试读取存储在由噪声监控设备生成的 WAV 文件上的 ICMT 标签中的数据。
RIFF 解析代码似乎工作正常,除了 ICMT 标签似乎在声明的大小之后有数据。幸运的是,它是时间戳,对于我的应用程序来说,这是一条绝对重要的信息。
SYN
是十六进制 16,其大小为 22,最多包含时间戳之前的 NUL。监视器文档没有帮助;它说标签包括时间,但他们的例子也有同样的问题。
它是封闭列表中的最后一个标签,并且列表的大小确实包含它 - 这是否意味着它不需要块 ID?我正在努力寻找像样的 RIFF 文档,但我找不到任何表明这种情况的东西;我也看不出如何确定它是最后一个块,因此知道在没有块 ID 的情况下读取它。
或者,ICMT 注释块是文件中的最后一件事——这是特例吗?我可以通过阅读从声明长度 ICMT 末尾到文件末尾的所有内容来获取时间,并假设这将始终有效吗?
当前的解析器行为是在通道/dB信息作为块ID +大小之后读取它,然后抱怨文件中没有足够的数据来满足请求。