iOS wav文件头详解

最近在做音频采样这部分的内容,涉及录制、转码、降频、重采样等内容。

在处理wav音频文件时发现,iOS的 “AVAudioRecorder” 在录制 “kAudioFormatLinearPCM” 音频格式输出的.wav文件时,添加的文件头并不是大家通用的44字节,而是4096字节,我通过逐个字节的解析,发现了多出的两个部分 “JUNK” 和 “FLLR” 。

  • 文件内容详解
5249 4646 RIFF
f8bf 0300 文件size(小端)
5741 5645 WAVE

//此处开始为多出的“JUNK”片段
{4a55 4e4b JUNK
1c00 0000 计数为28字节
0000 0000 0000 0000 0000 0000 0000 0000 字节内容(28byte)
0000 0000 0000 0000 0000 0000   
}

666d 7420 fmt 
1000 0000 过渡字节(不定)
0100      格式类别,为1时表示线性PCM编码,大于1时表示有压缩的编码。
0200      声道数,1为单声道,2为双声道
44ac 0000 采样率,采样频率,这里是44100
10b1 0200 位数,Byte率=采样频率*音频通道数*每次采样得到的样本位数/8,00005622H,也就是176400Byte/s=44100*2*16/8。
0400      一个采样多声道数据块大小,块对齐=通道数*每次采样得到的样本位数/8,也就是4=2*16/8
1000      一个采样占的bit数,样本数据位

//此处开始为多出的“FLLR”片段
{464c 4c52 FLLR
a80f 0000 计数为4008字节
0000 0000 0000 0000 0000 0000 0000 ...此处省略 //字节内容(4008byte)
}

6461 7461 data
00b0 0300 语音数据的长度(241664 byte)

//以上共4096字节,之后才是文件内容,也就是PCM音频格式的内容

0000 ....//正文内容(省略)

格式化文件内容后发现,是多出了一段ID为“JUNK”的数据段,加起来正好36字节。
之后在其他的一篇关于AVI视频格式的文章中看到对JUNK的解释:“无用数据,用于字节对齐。”

  • 对齐的定义
    现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。

你可能感兴趣的:(iOS wav文件头详解)