1. WAV格式說明:?
2. 格式說明:
chunkId
:通常是 “RIFF” 四個字節,用于標識文件類型。(wav文件格式表示)chunkSize
:表示整個文件除了chunkId
和chunkSize
這 8 個字節外的其余部分的大小。Format
:通常是 “WAVE” 四個字節,進一步標識是 WAVE 音頻格式。SubChunk1Id
:一般是 “fmt”(注意最后有個空格),用于標識音頻格式信息塊。SubChunk1Size
:表示音頻格式信息塊的大小,常見值為 16 或 18 等 。AudioFormat
:音頻格式類型,如 PCM 格式值為 1 。NumChannels
:聲道數,單聲道為 1,立體聲為 2 。SampleRate
:采樣率,如 44100Hz 表示每秒采樣 44100 次。ByteRate
:每秒的數據字節數,ByteRate = SampleRate * NumChannels * (BitsPerSample / 8)
。BlockAlign
:每個采樣點的字節數,BlockAlign = NumChannels * (BitsPerSample / 8)
。BitsPerSample
:每個采樣點的位數,常見有 8 位、16 位等。(采樣大小,位深)subChunk2Id
:通常是 “data”,標識音頻數據塊。subChunk2Size
:音頻數據的大小。data
:存儲實際的音頻數據
3.為什么XXXId和Format使用的是大端字節序
在 WAV 文件格式中,xxxId
(如chunkId
、SubChunk1Id
?、subChunk2Id
?)和Format
采用大端字節序,主要有以下原因:
- 兼容性與標準化:大端字節序也被稱為網絡字節序,在很多網絡協議和跨平臺的數據格式標準中廣泛使用。WAV 作為一種較為通用的音頻文件格式,這些標識性字段采用大端序便于不同系統和平臺之間能以統一的方式識別文件的關鍵標識信息,保證兼容性。例如在網絡傳輸音頻文件時,不同設備可以快速準確識別文件類型標識。
- 可讀性與易解析:這些字段更多的是起到標識作用,采用大端序固定格式,開發者和解析工具能更容易、快速地判斷文件結構和各部分的功能,提升文件解析的效率。
而其他描述音頻具體參數(如?AudioFormat
?、NumChannels
?等)的子節序采用小端字節序,主要是考慮到與常見計算機硬件架構的匹配:
- 硬件適配:在常見的 x86 等計算機硬件架構中,默認使用小端字節序。WAV 文件格式中這些參數數據采用小端序,在讀取和處理音頻參數時,能直接適配硬件的字節序,減少數據轉換的開銷,提高音頻數據處理的速度和效率 。