WAV文件格式


作者:阿寶 
更新:2016-09-21 
來源:彩色世界(https://blog.hz601.org/2016/09/21/waveform-audio-file-format/index.html) 

WAVE (Waveform Audio File Format),是由微軟和IBM公司共同開發的音頻編碼格式;廣泛應用於Windows平台;
又因為文件后綴名為.wav而被稱為WAV。

官方文檔

WAV文件格式 draft-ema-vpim-wav-00

WAVE和AVI支持的編碼格式 RFC 2361

文件格式

由多個塊組成,必須包含四種(分別為RIFF頭塊、格式塊、數據頭塊、數據塊),其中格式塊必須在數據塊前面,其他塊可自定義並且允許被忽略。
所有數據均以小端方式存儲。

OFFSET  LENGTH  VALUE   DESCRIPTION
0       4 bytes 'RIFF'  The file format ID.
4       4 bytes         Length of the file minus (-) 8 bytes.
8       4 bytes 'WAVE'  The data format ID.
12      4 bytes 'fmt '  The chunk ID.
16      4 bytes 32      Length of the chunk excluding the 8
                        bytes for the ID and length.
20      4 bytes         The codec ID.
24      4 bytes         The number of channels.
28      8 bytes         Samples per second.
36      8 bytes         Average bytes per second.
44      4 bytes         Block alignment.
48      4 bytes         Bits per sample.
52      4 bytes 'data'  The chunk ID.
56      4 bytes         Length of the data (chunk size minus (-) 8 bytes.
60      4 bytes 'fact'  The chunk ID.
        4 bytes  8      Chunk size minus (-) 8 bytes.
        8 bytes         Sample length.

WAV文件示例

下面是一個由FFmpeg轉碼生成的WAV文件示例,PCM數據,大小5292078B,位寬16bit,小端存儲,采樣率44100,2聲道,碼率1411kb/s。
分析發現,真實的WAV文件格式與IETF中的描述並不一致,暫時還沒找到原因。

在資源交換文件RIFF標准中,所有的數據被組織成"塊"格式,每個塊必須包含一個4字節的ID,一個4字節的長度字段,和若干字節的數據。

52 49 46 46 26 c0 50 00 57 41 56 45 66 6d 74 20
10 00 00 00 01 00 02 00 44 ac 00 00 10 b1 02 00
04 00 10 00 4c 49 53 54 1a 00 00 00 49 4e 46 4f
49 53 46 54 0e 00 00 00 4c 61 76 66 35 36 2e 34
30 2e 31 30 31 00 64 61 74 61 e0 bf 50 00 06 00
...

0-4B 0x52 0x49 0x46 0x46 文件格式標識'RIFF'
5-8B 0x26 0xc0 0x50 0x00 文件長度減8,小端存儲,此處為5292070
9-12B 0x57 0x41 0x56 0x45 數據格式標識'WAVE'

13-16B 0x66 0x6d 0x74 0x20 格式塊標識'fmt '
17-20B 0x10 0x00 0x00 0x00 格式長度,此處為16
21-22B 0x01 0x00 數據編碼格式 Microsoft PCM Format 0x0001 RFC2361
23-24B 0x02 0x00 音頻聲道數,此處為2,雙聲道
25-28B 0x44 0xac 0x00 0x00 音頻采樣率,此處為44100
29-32B 0x10 0xb1 0x02 0x00 平均碼率
33-34B 0x04 0x00 數據的調整數?
35-36B 0x10 0x00 樣本位寬,此處為16bit
37-40B 0x4c 0x49 0x53 0x54 塊標識'LIST'
41-44B 0x1a 0x00 0x00 0x00 塊長度,此處為26
45-70B 0x49 0x4e 0x46 0x4f 0x49 0x53 0x46 0x54 0x0e 0x00 0x00 0x00 0x4c 0x61 0x76 0x66 0x35 0x36 0x2e 0x34 0x30 0x2e 0x31 0x30 0x31 0x00
71-74B 0x64 0x61 0x74 0x61 數據頭塊標識'data'
75-78B 0xe0 0xbf 0x50 0x00 數據長度,不包括數據頭,此處為5292000
...

音頻數據

WAV編碼不對源數據做任何壓縮處理;
如果源數據是無損的,編碼后的WAV文件也是無損的;
如果源數據是有損的,編碼后的WAV文件也是有損的;

關於采樣

通常情況下人耳只能感受到頻率從100到20,000赫茲的信號;因此44,100赫茲的采樣相對於人耳即是“無損”的。
音樂制作人通常會錄制采為96,000赫茲的數據,之后采樣處理成不同的格式。

常見的音頻處理軟件

剪輯 Goldwave
精細制作 MATLAB


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM