複製鏈接
請複製以下鏈接發送給好友

WAVE

(編解碼器)

鎖定
WAV文件格式是一種由微軟和IBM聯合開發的用於音頻數字存儲的標準,它採用RIFF文件格式結構,非常接近於AIFF和IFF格式
中文名
編解碼器
外文名
WAVE
多媒體應用中使用了多種數據,包括位圖、音頻數據、視頻數據以及外圍設備控制信息等。RIFF為存儲這些類型的數據提供了一種方法,RIFF文件所包含的數據類型由該文件的擴展名來標識,能以RIFF文件存儲的數據包括:
# 波形格式數據(.WAV)
# 位圖格式數據(.RDI)
# MIDI格式數據(.RMI)
# 調色板格式(.PAL)
# 多媒體電影(.RMN)
# 動畫光標(.ANI)
# 其它RIFF文件(.BND)
RIFF是一種含有嵌套數據結構的二進制文件格式,每個數據結構都稱為因一個chunk()。Chunk在RIFF文件中沒有固定的位置,因而偏移量不能用於定位域值。一個塊中的數據包括數據結構、數據流或其它組塊(稱為子塊)等,每個RIFF塊都具有如下結構:
typedef struct _Chunk
DWORD ChunkId; /*塊標誌*/
DWORD ChunkSize; /*塊大小*/
BYTE ChunkData[ChunkSize]; /*塊內容*/
CHUNK;
ChunkId由4個ASCII字符組成,用以識別塊中所包含的數據。字符RIFF用於標識RIFF數據塊,間隔空格在右面是不超過4個字符的ID。由於這種文件結構最初是由Microsoft和IBM為PC機所定義,RIFF文件是按照little-endian字節順序寫入的,而採用big-endian字節順序的文件則用‘RIFX’作為標誌。
ChunkSize(塊大小)是存儲在ChunkData域中數據長度,ChunkId與ChunkSize域的大小則不包括在該值內。
ChunkData(塊內容)中所包含的數據是以字(WORD)為單位排列的,如果數據長度是奇數,則在最後添加一個空(NULL)字節
子塊(Subchunk)與塊具有相同的結構。一個子塊就是包含在其它塊內部的一個塊,只有RIFF文件塊‘RIFF’和列表塊‘List’才能含有子塊,所有其它塊僅能含有數據。一個RIFF文件就是一個RIFF塊,文件中所有其它塊和子塊均包含在這個塊中。
WAV文件可以存儲大量格式的數據,通常採用的音頻編碼方式脈衝編碼調製(PCM)。由於WAV格式源自Windows/Intel環境,因而採用Little-Endian字節順序進行存儲。
脈衝編碼調製
Claude E. Shannon於1948年發表的“通信的數學理論”奠定了現代通信的基礎。同年貝爾實驗室的工程人員開發了PCM技術,雖然在當時是革命性的,但今天脈衝編碼調製被視為是一種非常單純的無損耗編碼格式音頻在固定間隔內進行採集並量化為頻帶值,其它採用這種編碼方法的應用包括電話和CD。PCM主要有三種方式:標準PCM、差分脈衝編碼調製(DPCM)和自適應DPCM。在標準PCM中,頻帶被量化為線性步長的頻帶,用於存儲絕對量值。在DPCM中存儲的是前後電流值之差,因而存儲量減少了約25%。自適應DPCM改變了DPCM的量化步長,在給定的信造比(SNR)下可壓縮更多的信息。
共同的執行過程
在對WAV音頻文件進行編解碼過程中,最一致的地方包括採樣點和採樣幀的處理和轉換。一個採樣點的值代表了給定時間內的音頻信號,一個採樣幀由適當數量的採樣點組成並能構成音頻信號的多個通道。對於立體聲信號一個採樣幀有兩個採樣點,一個採樣點對應一個聲道。一個採樣幀作為單一的單元傳送到數/模轉換器(DAC),以確保正確的信號能同時發送到各自的通道中。