我一直在尝试vb.net中的wav joiner程序来加入wav文件,虽然它的某些时间工作正常,但通常结果wav文件无法播放。在窥视了原始的wav文件之后,我注意到数据子块中'data'这个词开始于偏移量38而不是36.这就是搞错了假设偏移量为36的木工程序。当我将该wav文件从audacity ,它将它固定起来,并且数据子句块从36开始。所有程序都能够正常播放原始文件,所以我想它是有效的。为什么在那些wav文件中的'data'之前有两个额外的00字节值?为什么某些wav文件的数据子块是2字节关闭的?
回答
这是一个猜测,但是你看看在偏移量为38的文件中偏移量为16的四字节数字吗?data
?
fmt
子块的大小是可变的,其大小是在相对于块ID(在文件中为零)的偏移16处的dword中指定的。该dword值是子块其余部分的大小,不包括ID字段和大小字段本身。我的猜测是,如果你看那里,那些有两个额外字节的人会说他们的fmt
子块是18字节长而不是16(谢谢ooga为了捕捉我的错误)。
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
当有一个大小字段,总是使用它。如果文件格式会告诉你有多大的事情,则不需要跳转到信任文件中的固定偏移量。如果它告诉你事物的大小,把它当作一个警告,说明大小可能会改变。
我相信它会是18而不是16(不是26而不是24)。 – ooga
@ooga完全正确,它是子块的*余数*的大小,不包括ID和大小字段。我不好,我会解决这个问题。谢谢! –
- 1. wav文件中实际包含的数据块是什么?
- 2. 为什么某些.wav文件无法在Firefox
- 3. WAV文件的其他子块是什么?
- 4. 为什么某些字符常量宽1字节,其他2字节宽?
- 5. 24位wav文件的数据块是否有符号或无符号字节?
- 6. 在节点中,为什么某些模块导出函数?
- 7. 这些文件描述符关闭的目的是什么?
- 8. 什么是关闭文件的需要?
- 9. 为什么我的文件关闭?
- 10. 为什么不关闭数据库连接在最后的块
- 11. WAV文件中的实际数据是什么?
- 12. 读取.wav文件时返回的数据究竟是什么?
- 13. 这些字节是什么?
- 14. 什么是将mp3文件转换为wav文件的算法?
- 15. 如何关闭joomla中的某些页面的组件块
- 16. C# - 伪造数据加载* .wav文件的字节数组时
- 17. 如何访问.wav文件的子块数据?
- 18. Java - Wav文件 - 空字节?
- 19. TCP数据包:这些额外字节的含义是什么?
- 20. 为什么运行hadoop时数据节点会关闭?
- 21. 为什么sqlite3_prepare_v2关闭数据库?
- 22. 为什么关闭curl头文件?
- 23. 如何将WAV/CAF文件的采样数据转换为字节数组?
- 24. 如何找到wav文件的字节?
- 25. 为什么java中的字符大小是2个字节?
- 26. AVPlayer为什么不播放.wav文件
- 27. 是否有可能某些网络数据包是空字节?
- 28. 基本的wav数据块
- 29. 为什么短为2字节对齐?
- 30. 为什么有些MySQL数据类型需要一些额外的字节?
在具有两个额外字节的子块中,子块1的大小是否正确? https://ccrma.stanford.edu/courses/422/projects/WaveFormat/26而不是24?当你有一个尺寸的领域,你不需要假定尺寸总是相同的,它的存在是一个暗示,它可能不是。 –
是的你是对的,子块大小是18而不是其他文件中的16。我只是在发布后注意到另一篇关于此的帖子:http://stackoverflow.com/questions/19991405/how-can-i-detect-whether-a-wav-file-has-a-44-or-46-byte- header – nlehman