【问题标题】:"ChunkSize" in WAV filesWAV 文件中的“ChunkSize”
【发布时间】:2018-05-26 04:42:15
【问题描述】:

我目前正在查看 WAV 文件的以下信息,并且遇到了包含在其标题中的 WAV 文件的“ChunkSize”。但是,我无法理解 ChunkSize 的值是如何计算的。根据

http://tiny.systems/software/soundProgrammer/WavFormatDocs.pdf

    36 + SubChunk2Size, or more precisely: 
                           4 + (8 + SubChunk1Size) + (8 + SubChunk2Size) 
                           This is the size of the rest of the chunk  
                           following this number.  This is the size of the 
                           entire file in bytes minus 8 bytes for the 
                           two fields not included in this count: 
                           ChunkID and ChunkSize.  

我已经看了大约 40 分钟,但我不明白这些数字是从哪里来的。比如“4”是从哪里来的,而“8”又是从哪里来的?

【问题讨论】:

    标签: audio wav


    【解决方案1】:

    根据WavFormatDocs 链接中的第一张图,ChunkSize 是FormatSubChunk1ID + SubChunk1Size + SubChunk1SubChunk2ID + SubChunk2Size + SubChunk2 字段中的总字节数:

    Format:                              4 bytes
    SubChunk1ID + SubChunk1Size: 4 + 4 = 8 bytes
    SubChunk1:                           <SubChunk1Size> bytes
    SubChunk2ID + SubChunk2Size: 4 + 4 = 8 bytes
    SubChunk2:                           <SubChunk2Size> bytes
                                         ---------------------------------------------------
                                         4 + (8 + SubChunk1Size) + (8 + SubChunk2Size) bytes
    

    fmt 块是固定大小的:

    SubChunk1ID:   4  bytes 
    SubChunk1Size: 4  bytes 
    SubChunk1:     16 bytes
                   --------
                   24 bytes
    

    所以ChunkSize 是:

    Format:         4 bytes 
    fmt chunk:     24 bytes 
    SubChunk2ID:    4 bytes 
    SubChunk2Size:  4 bytes
    SubChunk2:     <SubChunk2Size> bytes
                   ---------------------
                   36 + <SubChunk2Size> bytes
    

    【讨论】:

    • 非常感谢您解释这些数字是什么!
    【解决方案2】:

    看起来第二个字段 ChunkSize 的名称是设计错误。或者也许是由于历史原因。也许他们在格式演变的早期并没有想到会添加多个块。我根本不需要使用 ChunkSize,只需通过验证它的存在并检查值是否正确来计算它。并且稍后以有意义的方式在格式中使用相同的术语“块大小”。 我的代码中的 ChunkSize 是“file_length - 8”。如果不是,则抛出异常。 它可以被描述为“wav 文件知道自己的大小”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 2011-03-04
      • 2014-09-16
      • 1970-01-01
      相关资源
      最近更新 更多