【问题标题】:Why is the data subchunk of some wav files 2 bytes off?为什么某些 wav 文件的数据子块少了 2 个字节?
【发布时间】:2014-06-23 20:15:14
【问题描述】:

我一直在尝试在 vb.net 中使用 wav joiner 程序来加入 wav 文件,虽然它有时可以正常工作,但生成的 wav 文件通常无法播放。在查看原始 wav 文件后,我注意到“数据”一词所在的数据子块从偏移量 38 而不是 36 开始。这就是弄乱假定偏移量 36 的连接器的原因。当我从 audacity 重新导出该 wav 文件时,它修复了它,数据子块从 36 开始。所有程序都可以正常播放原始文件,所以我猜它是有效的。为什么这些 wav 文件中的“数据”一词之前有两个额外的 00 字节值?

【问题讨论】:

标签: audio wav


【解决方案1】:

这是一个猜测,但是您是否查看过文件中位于偏移 16 处的四字节数字,其中data 从偏移 38 开始?

fmt 子块的大小可变,其大小在相对于块 ID 偏移 16 处的 dword 中指定,块 ID 在您的文件中为零。该 dword 值是子块剩余部分的大小,不包括 ID 字段和大小字段本身。我的猜测是,如果你看那里,那些有两个额外字节的人会说他们的fmt 子块的长度是 18 个字节而不是 16 个(感谢 ooga 发现我的错误)。

https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

当有大小字段时,请始终使用它。如果文件格式会告诉您事情有多大,则无需跳到文件中的固定偏移量。如果它告诉您事物的大小,请将其视为大小可能会改变的警告。

【讨论】:

  • 我相信它将是 18 而不是 16(不是 26 而不是 24)。
  • @ooga 很对,就是子块的remainder的大小,不包括ID和大小字段。我的错,我会解决的。谢谢!
猜你喜欢
  • 2016-06-19
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2017-09-01
  • 2022-08-14
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多