WAV文件格式(2)
除了最常用的"fmt"和"data" chunk 之外还有较为重要的Fact Chunk,Cue chunk,PlayList chunk等
Fact chunk - "fact":存储压缩码的相关信息,对所有压缩的WAV文件来说是必须的,尤其当数据块"data"是包含在"wavl"chunk中时;
SizeDescriptionValue4Chunk ID"fact"(0x66616374)4Chunk Data size取决于压缩格式4Format Department DataNumber of Samples(per channel) Format Department Data: 4字节数值,指明数据块中样值的数目,可用与Sample rate一起用来计算波形长度。
实例1:fact chunk 在data chunk之前
实例2:fact chunk在data chunk后面
Cue chunk - "cue":指定音频数据中重点部分的编号(偏移量)
WAV文件中至多有一个cue 块,一个cue块即可指定WAVE文件中的所有提示点
SizeDescriptionValue4Chunk ID"cue"(0x63765520)4Chunk Data Size取决于提示点的数目4Number of Cue points列表中提示点的数目List of cue points Chunk Data size 的计算公式:4+(number of cue points *24) 24:每个cue point的大小
提示点列表中提示点的描述方法:
SizeDescriptionValue4IDunique identification value4positionplay oeder position4Data Chunk IDRIFF ID of corresponding data chunk4Chunk startByte Offset of Data Chunk4Block startByte Offset to sample of First Channel4Sample OffsetByte Offset to sample byte of First Channel ID:用于将提示点和其他块中的信息相关联
position:指定和提示点关联的样本的位置(偏移量),这和playlist块有关,如果playlist已指定,position的值就是音频按序播放时提示点出现时的样值号,没有playlist则为0
Data Chunk ID:与提示点相对应的数据块的ID,也与play list有关,有playlist是,指"data"或"sint",无则仅指"data"
Chunk start:指定和提示点相对应的数据块的字节偏移量,文件中包含"wavl"(块)时,指"data"在"wavl"块中的偏移量,没有则值为0;
Block start:指定包含样值的块(block)在"data"或"slnt"块(chunk)中的位置(偏移量),便于解码时找到相应的样本值
Sample offset:指定与提示点相对应的样值在块(block start 指定的)中的位置(偏移量)
实例:
0x00 00 00 34:52字节,说明一共有2个提示点
PlayList chunk - "plst":指定了一系列提示点的播放顺序
由一系列片段(segment)组成,每个片段包含诸如:播放起始点,长度,重复播放次数等信息
SizeDescriptionValue4Chunk ID"plst"(0x736C6e74)4Chunk Data SizeNum segments*24Number of segments1- 0xFFFFFFFFList of segments list of segments:
描述规则如下(不必严格按照指定的顺序,因为播放顺序由和提示点关联的片段决定):
SizeDescriptionValue4Cue Point ID0 - xFFFFFFFF4Length(in samples)1 - xFFFFFFFF4Number of repeats1 - xFFFFFFFF
Cue point ID:指定片段的其实样本,这个ID值是唯一的,以便与其他片段加以区分
Length:指定从关联了提示点的样本开始 播放或循环的样本数
Number of Repeats:指定该片段循环的次数
Associated Data List chunk - "list":定义和提示点关联的文本标签和名称,目的是给每个文本标签或名称提供位置
SizeDescriptionValue4Chunk ID"list"(0x6C696E74)4Chunk Data sizedepends on contained text4Type ID"adtl"(0x6164746C)List of Text Labels and Names List of Text Labels and Names:以不同方式定义文本的块的列表,在WAVE文件中常见的是Label chunk,Note Chunk,Labeled Text Chunk.