1,PCM16LE雙聲道數(shù)據(jù)中左聲道和右聲道的采樣值是間隔存儲的。每個采樣值占用2Byte空間咙崎;
注:采樣格式16LE,“16”代表采樣位數(shù)是16bit吨拍。由于1Byte=8bit,所以一個聲道的一個采樣值占用2Byte网杆。
“LE”代表Little Endian羹饰,代表2Byte采樣值的存儲方式為高位存在高地址中。
2碳却,PCM16LE雙聲道音頻采樣數(shù)據(jù)轉換為PCM8音頻采樣數(shù)據(jù).
PCM16LE格式的采樣數(shù)據(jù)的取值范圍是-32768到32767队秩,而PCM8格式的采樣數(shù)據(jù)的取值范圍是0到255。
所以PCM16LE轉換到PCM8需要經(jīng)過兩個步驟:
1,第一步是將-32768到32767的16bit有符號數(shù)值轉換為-128到127的8bit有符號數(shù)值;
2,昼浦,第二步是將-128到127的8bit有符號數(shù)值轉換為0到255的8bit無符號數(shù)值馍资。
3,PCM16LE雙聲道音頻采樣數(shù)據(jù)轉換為WAVE格式音頻數(shù)據(jù)关噪。
WAVE格式音頻(擴展名為“.wav”)是Windows系統(tǒng)中最常見的一種音頻鸟蟹。該格式的實質就是在PCM文件的前面加了一個文件頭。
本程序的函數(shù)就可以通過在PCM文件前面加一個WAVE文件頭從而封裝為WAVE格式音頻使兔。
WAVE文件是一種RIFF格式的文件建钥。其基本塊名稱是“WAVE”,其中包含了兩個子塊“fmt”和“data”虐沥。從編程的角度簡單說來就是由WAVE_HEADER熊经、WAVE_FMT、WAVE_DATA欲险、采樣數(shù)據(jù)共4個部分組成镐依。它的結構如下所示。
WAVE文件構成 |
---|---
WAVE_HEADER |
WAVE_FMT |
WAVE_DATA |
PCM數(shù)據(jù) |
其中前3部分的結構如下所示天试。在寫入WAVE文件頭的時候給其中的每個字段賦上合適的值就可以了槐壳。但是有一點需要注意:WAVE_HEADER和WAVE_DATA中包含了一個文件長度信息的dwSize字段,該字段的值必須在寫入完音頻采樣數(shù)據(jù)之后才能獲得秋秤。因此這兩個結構體最后才寫入WAVE文件中宏粤。
————————————————