標籤: 暫無標籤

WAV (或 WAVE)是微軟公司開發的一種聲音文件格式,是Windows中存儲到硬碟上的聲音文件的擴展名。用於保存Windows平台的音頻信息資源。該格式也支持MSADPCM,CCITTALAW等多種壓縮運演算法,支持多種音頻數字,取樣頻率是44.1K的取樣頻率、聲道是16位量化數字。

1 WAV -簡介

WAVWAV是微軟公司開發的一種聲音文件格式

WAV為微軟公司(Microsoft)開發的一種聲音文件格式,它符合RIFF(Resource Interchange File Format)文件規範,用於保存Windows平台的音頻信息資源,被Windows平台及其應用程序所廣泛支持,該格式也支持MSADPCM,CCITT A LAW等多種壓縮運演算法,支持多種音頻數字,取樣頻率和聲道:標準格式化的WAV文件和CD格式一樣,也是44.1K的取樣頻率,16位量化數字,因此在聲音文件質量和CD相差無幾。WAV音頻格式的優點包括:簡單的編/解碼(幾乎直接存儲來自模/數轉換器(ADC)的信號)、普遍的認同/支持以及無損耗存儲。WAV格式的主要缺點是需要音頻存儲空間。對於小的存儲限制或小帶寬應用而言,這可能是一個重要的問題。WAV格式的另外一個潛在缺陷是在32位WAV文件中的2G限制。

通常使用三個參數來表示聲音,量化位數,取樣頻率和聲道數。聲道有單聲道和立體聲之分,取樣頻率一般有11025Hz(11kHz) ,22050Hz(22kHz)和44100Hz(44kHz) 三種,不過儘管音質出色,但在壓縮后的文件體積過大!相對其他音頻格式而言是一個缺點,其文件大小的計算方式為:

WAV格式文件所佔容量 = (取樣頻率 X 量化位數 X 聲道) X 時間 / 8 (位元組 = 8bit)

支持WAV設計的手機有:索尼愛立信P910和諾基亞N90以及採用微軟OS的多普達、魅族M8等手機。

2 WAV -剖析

每個WAVE文件的頭四個,位元組便是「RIFF」,RIFF是英文ResourceInterchangeFileFormat的縮寫。WAVE文件是由若干個Chunk組成的。按照在文件中的出現位置包括:RIFFWAVE、Chunk、FormatChunk、FactChunk(可選)、DataChunk。

1、Wav格式包含Chunk示例,見圖1:

WAV圖1
其中除了FactChunk外,其他三個Chunk是必須的。每個Chunk有各自的ID,位於Chunk最開始位置,作為標示,而且均為4個位元組。並且緊跟在ID後面的是Chunk大小(去除ID和Size所佔的位元組數后剩下的其他位元組數目),4個位元組表示,低位元組表示數值低位,高位元組表示數值高位。下面具體介紹各個Chunk內容。所有數值表示均為低位元組表示低位,高位元組表示高位。

2、RIFFWAVEChunk,見圖2
WAV圖2
以'FIFF'作為標示,然後緊跟著為size欄位,該size是整個wav文件大小減去ID和Size所佔用的位元組數,即FileLen-8=Size。然後是Type欄位,為「WAVE」,表示是wav文件。結構定義如下:
structRIFF_HEADER
{
charszRiffID[4];//'R','I','F','F'
DWORDdwRiffSize;
charszRiffFormat[4];//'W','A','V','E'
};

3、FormatChunk,見圖3
WAV圖3
以'fmt'作為標示。一般情況下Size為16,此時最後附加信息沒有;如果為18則最後多了2個位元組的附加信息。主要由一些軟體製成的wav格式中含有該2個位元組的附加信息。結構定義如下:
structWAVE_FORMAT
{
WORDwFormatTag;
WORDwChannels;
DWORDdwSamplesPerSec;
DWORDdwAvgBytesPerSec;
WORDwBlockAlign;
WORDwBitsPerSample;
};
structFMT_BLOCK
{
charszFmtID[4];//'f','m','t',''
DWORDdwFmtSize;
WAVE_FORMATwavFormat;
};

4、FactChunk,見圖4

WAV圖4
FactChunk是可選欄位,一般當wav文件由某些軟體轉化而成,則包含該Chunk。結構定義如下:
structFACT_BLOCK
{
charszFactID[4];//'f','a','c','t'
DWORDdwFactSize;
};

5、DataChunk,見圖5
WAV圖5

DataChunk是真正保存wav數據的地方,以'data'作為該Chunk的標示。然後是
數據的大小。緊接著就是wav數據。根據FormatChunk中的聲道數以及採樣bit數,
wav數據的bit位置可以分成以下幾種形式:(圖6)
WAV圖6
DataChunk頭結構定義如下:
structDATA_BLOCK
{
charszDataID[4];//'d','a','t','a'
DWORDdwDataSize;
};

寫了一個程序把wav文件讀取到指定數組中.已知wav文件16位單聲道.
voidread_wave(char*str)
{
intfd,len,k,data_size;
unsignedchara[44];
unsignedcharb[8000];
fd=open(str,O_RDONLY);
len=read(fd,a,44);
data_size=(((unsignedint)(a[7]))<<24)+(((unsignedint)(a[6]))<<16)+((unsignedint)(a[4]))+(((unsignedint)(a[4])<<);
len=read(fd,b,8000);
close(fd);
for(k=0;k<4400;k++)
t[k]=(((unsignedshort)(b[2*k]))+(((unsignedshort)(b[2*k+1]))<<+3276;
for(k=0;k<4400;k++)
t[k]=((int)(((int)(t[k]))*400))/65535;
}

3 WAV -支持格式

Wave格式支持MSADPCM、CCITTALaw、CCITTμLaw和其它壓縮演算法,支持多種音頻位數、採樣頻率和聲道,但其缺點是文件體積較大(一分鐘44kHZ、16bit Stereo的WAV文件約要佔用10MB左右的硬碟空間),所以不適合長時間記錄。

在Windows中,把聲音文件存儲到硬碟上的擴展名為WAV。WAV記錄的是聲音的本身,所以和MIDI相比它占的硬碟空間很大。例如:16位的44.1KHZ的立體聲聲音一分鐘要佔用大約10MB的容量。

4 WAV -編解碼器

WAV16位WAV音頻文件展示
WAV文件格式是一種由微軟和IBM聯合開發的用於音頻數字存儲的標準,它採用RIFF文件格式結構,非常接近於AIFF和IFF格式。多媒體應用中使用了多種數據,包括點陣圖、音頻數據、視頻數據以及外圍設備控制信息等。RIFF為存儲這些類型的數據提供了一種方法,RIFF文件所包含的數據類型由該文件的擴展名來標識,能以RIFF文件存儲的數據包括:音頻視頻交錯格式數據(.AVI)、波形格式數據(.WAV)、點陣圖格式數據(.RDI)、MIDI格式數據(.RMI)、調色板格式(.PAL)、多媒體電影(.RMN)、動畫游標(.ANI)、其它RIFF文件(.BND)
  
RIFF是一種含有嵌套數據結構的二進位文件格式,每個數據結構都稱為因一個chunk(塊)。Chunk在RIFF文件中沒有固定的位置,因而偏移量不能用於定位域值。一個塊中的數據包括數據結構、數據流或其它組塊(稱為子塊)等,每個RIFF塊都具有如下結構:
typedefstruct_Chunk
{
DWORDChunkId;"
DWORDChunkSize;"
BYTEChunkData[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位元組順序進行存儲。

共同的執行過程
在對WAV音頻文件進行編解碼過程中,最一致的地方包括採樣點和採樣幀的處理和轉換。一個採樣點的值代表了給定時間內的音頻信號,一個採樣幀由適當數量的採樣點組成並能構成音頻信號的多個通道。對於立體聲信號一個採樣幀有兩個採樣點,一個採樣點對應一個聲道。一個採樣幀作為單一的單元傳送到數/模轉換器(DAC),以確保正確的信號能同時發送到各自的通道中。

5 WAV -播放wav工具

一、Zen wav播放器

WAVZen Wav播放器
Zen Wav播放器是創新公司推出的具有內置揚聲器的產品,Zen Wav播放器的正面左右兩側帶有兩個揚聲器。可用於播放wav文件。Zen Wav播放器容量分為2GB和4GB兩種;鋰離子電池可進行30個小時音樂播放,揚聲器打開可支持20個小時;採用了1.5英寸TFT液晶屏,解析度為128×128像素;外形大小為85×42×12.5mm,重量為49g。支持MP3、WMA、WAV、JPG、AVI(OpenDML)等格式,支持MSC傳輸。

ZenWav播放器帶有齊全的附件,包括碟片、使用手冊、USB數據線、耳機、保護套、Line-in線、音樂底座等。

二、VB中播放WAV文件
WAVVB中播放WAV文件的VB界面
在多媒體軟體的開發設計中,聲音是一個相當重要的多媒體元素,優秀的聲音設計會為多媒體軟體增色不少。而WAV格式的聲音文件是一種最常用的聲音文件格式,也最容易得到,比如通過Win 95中的「錄音機」程序,利用麥克風就可以非常簡單地錄製WAV文件。VB是一個相當經典的多媒體開發的工具,在VB中播放WAV文件的方法主要有這樣幾種。

1、利用OLE控制項
建一個窗體,用滑鼠選擇OLE控制項,在窗體上拖出OLE區域,在圖一的窗口中選擇新建和聲音然後按確定鍵就完成了在窗口中添加OLE控制項。 這樣就可以在OLE控制項的ResourceDoc屬性中選擇所要播放的文件,程序運行時雙擊OLE控制項即可。在實際的程序設計當中,往往需要單擊某個圖標或按鈕來控制聲音的播放,其實現方法是這樣的:首先將OLE控制項的VISIBLE屬性設置為FALSE,然後在圖標或按鈕的單擊事件中編寫如下的程序:
Private Sub Contol_Click()
OLE1 .Action = 7
End Sub

2、利用MMControl控制項
VB5.0提供了許多設計多媒體的控制項,在PROJECT/COMPENENTS/CONTROLS中選擇MMControls 控制項,窗體上就出現了多媒體控制項對象,在這個對象上有不同的圖形功能標識,其名稱從左到右分別是Pre、Next、Play、Pause、Back、Step、Stop、Record 、Eject。

這個多媒體控制項可以播放多種格式的聲音,播放WAV格式聲音文件的程序代碼

Private Sub form_load() 
MMControl1.DeviceType = 「waveaudio」
MMControl1.filename = 「c:\win95\media\ding.wav」
MMControl1.Command = 「open」
End Sub 』

以下為圖形標識Play事件編寫的代碼
 
Private Sub MMControl_playclick(cancel As Integer)
MMControl1.Command = 「play」
End Sub

當運行這個程序時,MMControl控制項中的Play鍵被激活,點取此按鈕即可播放ding.wav文件。
在實際的軟體設計當中,更多的情況是滑鼠點擊按鈕或圖標來控制聲音的播放, 其實現方法是這樣的:首先將MMControl控制項的VISIBLE屬性設置為FALSE,然後在圖標或按鈕的單擊事件中編寫如下的程序:
Private Sub Control1_Click()
MMControl1.Command = 「play」
End Sub

運行程序時單擊相用的按鈕或圖標,WAV文件照樣可以播放。用自行設計的按鈕或圖標取代多媒體控制項中的固定按鈕,可設計出更加靈活方便的用戶界面。

3、利用VB的API函數
在窗體的DECLARATIONS(聲明)中輸入如下代碼:
Private Declare Function sndPlaySound Lib 「winmm.dll」Alias 「sndPlaySoundA」(ByVal_lpszSoundName As String,ByVal uFlags As Long) As Long

「lpszSoundName」是一個字元串變數,表示一個WAV格式的文件名。「uFlags」 用於設定播放狀態的各種選項。參數值為0X00時,實現同步播放,參數值為0X01時實現非同步播放。
     
在命令按鈕的單擊事件中輸入如下代碼: 
Private Sub Command1_Click()
Dim plays As Long 
plays = sndPlaySound(「E:\WINDOWS\MEDIA\DING.WAV」,&H0) 
End Sub

運行時單擊命令按鈕即可播放WAV文件。 

6 WAV -相關詞條

AVIWMAMPC
MP3ASFPCM


7 WAV -參考資料

[1]IT潮流網:http://www.ittide.com/
[2]三好在線:http://www.sosol.com.cn/
上一篇[百慕大群島]    下一篇 [聖巴托洛繆島]

相關評論

同義詞:暫無同義詞