標籤:
WAV檔案也分了好幾類,相應的非資料資訊儲存在檔案的頭部,下面簡單的提一下,然後在最後重點介紹44位元組的那種,一般用的都是這個。
1、8KHz採樣、16位元量化的線性PCM語音訊號的WAVE檔案頭格式表(共44位元組)
位移地址 位元組數 資料類型 內容 檔案頭定義為
00H 4 char "RIFF" char riff_id[4]="RIFF"
04H 4 long 檔案總長-8 long int size0=文總長-8
08H 8 char "WAVEfmt " char wave_fmt[8]
10H 4 long 過濾位元組(一般為10H) long size1=0x10
14H 2 int 編碼方式(01 00H) int fmttag=0x01
16H 2 int 通道數(1為單聲道,2為雙聲道) int channel=1 或2
18H 4 long 採樣率 long int samplespersec
1CH 4 long 傳輸速率 long int bytepersec =採樣頻率*通道數*量化數/8
20H 2 int 資料區塊對齊(採樣一次占的位元組) int blockalign=聲道數*量化數/8
22H 2 int 量化數(採樣精度) int bitpersamples=8或16
24H 4 char "data" char data_id[4]="data"
28H 4 long 資料部分長度 long int size2=文長-44
2CH 到文尾 char 採樣資料
2、8KHz採樣、8位元A律量化的PCM語音訊號的WAVE檔案頭格式表(共58位元組)
位移地址 位元組數 資料類型 內容 檔案頭定義為
00H 4 char "RIFF" char riff_id[4]="RIFF"
04H 4 long int 檔案總長-8 long int size0=文總長-8
08H 8 char "WAVEfmt " char wave_fmt[8]
10H 4 long int 12000000H(ALAW) long int size1=0x12
14H 2 int 06 00H int fmttag=0x06
16H 2 int 聲道數 int channel=1 或2
18H 4 long int 採樣率 long int samplespersec
1CH 4 long int 每秒播放位元組數 long int bytepersec
20H 2 int 採樣一次占位元組數 int blockalign=0x01
22H 4 long int 量化數 long int bitpersamples=8
26H 4 char "fact" char wave_fact="fact"
2AH 8 char 0400000000530700H定 char temp
32H 4 char "data" char wave_data="data"
36H 4 long int 採樣資料位元組數 lont int size2=文長-58
3、8KHz採樣、8位元U律量化的PCM語音訊號的WAVE檔案頭格式表(共58位元組)
位移地址 位元組數 資料類型 內容 檔案頭定義為
00H 4 char "RIFF" char riff_id[4]="RIFF"
04H 4 long int 檔案總長-8 long int size0=文總長-8
08H 8 char "WAVEfmt " char wave_fmt[8]
10H 4 long int 12000000H(ULAW) long int size1=0x12
14H 2 int 07 00H int fmttag=0x07
16H 2 int 聲道數 int channel=1 或2
18H 4 long int 採樣率 long int samplespersec
1CH 4 long int 每秒播放位元組數 long int bytepersec
20H 2 int 採樣一次占位元組數 int blockalign=0x01
22H 4 long int 量化數 long int bitpersamples=8
26H 4 char "fact" char wave_fact="fact"
2AH 8 char 0400000000530700H定 char temp
32H 4 char "data" char wave_data="data"
36H 4 long int 採樣資料位元組數 lont int size2=文長-58
4、ADPCM語音編碼後的WAVE檔案頭格式表(共90位元組)
位移地址 位元組數 資料類型 內容 檔案頭定義為
00H 4 char "RIFF" char riff_id[4]="RIFF"
04H 4 long int 檔案總長-8 long int size0=文總長-8
08H 8 char "WAVEfmt " char wave_fmt[8]
10H 4 long int 32000000H(ADPCM) long int size1=0x32
14H 2 int 02 00H int fmttag=0x02
16H 2 int 聲道數 int channel=1 或2
18H 4 long int 採樣率 long int samplespersec
1CH 4 long int 每秒播放位元組數 long int bytepersec
20H 2 int 採樣一次占位元組數 int blockalign=聲道數*量化數/8
22H 2 int 量化數 int bitpersamples=4
24H 34 char 固定位元組 char temp1
46H 4 char "fact" char wave_fact="fact"
4AH 8 char 0400000004930600H定 char temp2
52H 4 char "data" char wave_data="data"
56H 4 long int 採樣資料位元組數 lont int size2=文長-90
5AH 到文尾 採樣資料
5、GSM語音編碼後的WAVE檔案頭格式表(共60位元組)
位移地址 位元組數 資料類型 內容 檔案頭定義為
00H 4 char "RIFF" char riff_id[4]="RIFF"
04H 4 long int 檔案總長-8 long int size0=文總長-8
08H 8 char "WAVEfmt " char wave_fmt[8]
10H 4 long int 14000000H(GSM) long int size1=0x14
14H 2 int 31 00H int fmttag=0x31
16H 2 int 聲道數 int channel=1 或2
18H 4 long int 採樣率 long int samplespersec
1CH 4 long int 每秒播放位元組數 long int bytepersec
20H 8 char 4100000002004001H定 char temp1
28H 8 char 6661637404000000H定 char temp2
30H 4 char 40 E2 05 00H定 char temp3
34H 4 char "data" char wave_data="data"
38H 4 long int 採樣資料位元組數 lont int size2=文長-60
3CH 到文尾 採樣資料
6、SBC語音編碼後的WAVE檔案頭格式表(共58位元組)
位移地址 位元組數 資料類型 內容 檔案頭定義為
00H 4 char "RIFF" char riff_id[4]="RIFF"
04H 4 long int 檔案總長-8 long int size0=文總長-8
08H 8 char "WAVEfmt " char wave_fmt[8]
10H 4 long int 12000000H(SBC) long int size1=0x12
14H 2 int 71 00H int fmttag=0x71
16H 2 int 聲道數 int channel=1 或2
18H 4 long int 採樣率 long int samplespersec
1CH 4 long int 每秒播放位元組數 long int bytepersec
20H 2 int 採樣一次占位元組數 int blockalign=0x25
22H 4 long int 量化數 long int bitpersamples=16
26H 4 char "fact" char wave_fact="fact"
2AH 8 char 0400000076280400H定 char temp
32H 4 char "data" char wave_data="data"
36H 4 long int 採樣資料位元組數 lont int size2=文長-59
7、CELP語音編碼後的WAVE檔案頭格式表(共58位元組)
位移地址 位元組數 資料類型 內容 檔案頭定義為
00H 4 char "RIFF" char riff_id[4]="RIFF"
04H 4 long int 檔案總長-8 long int size0=文總長-8
08H 8 char "WAVEfmt " char wave_fmt[8]
10H 4 long int 12000000H(CELP) long int size1=0x12
14H 2 int 70 00H int fmttag=0x70
16H 2 int 聲道數 int channel=1 或2
18H 4 long int 採樣率 long int samplespersec
1CH 4 long int 每秒播放位元組數 long int bytepersec
20H 2 int 採樣一次占位元組數 int blockalign=0x0C
22H 4 long int 量化數 long int bitpersamples=16
26H 4 char "fact" char wave_fact="fact"
2AH 8 char 0400000060520700H定 char temp
32H 4 char "data" char wave_data="data"
36H 4 long int 採樣資料位元組數 lont int size2=文長-58
iOS開發——WAVE音頻檔案解析