多媒體技術(shù)與應(yīng)用 3.2 音頻播放器的制作_第1頁
多媒體技術(shù)與應(yīng)用 3.2 音頻播放器的制作_第2頁
多媒體技術(shù)與應(yīng)用 3.2 音頻播放器的制作_第3頁
多媒體技術(shù)與應(yīng)用 3.2 音頻播放器的制作_第4頁
多媒體技術(shù)與應(yīng)用 3.2 音頻播放器的制作_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、3.2 音頻播放器的制作音頻播放器的制作3.2.1 3.2.1 多媒體編程基礎(chǔ)多媒體編程基礎(chǔ)3.2.2 3.2.2 波形音頻播放器波形音頻播放器 3.2.1 3.2.1 多媒體編程基礎(chǔ)多媒體編程基礎(chǔ)一、一、 多媒體文件多媒體文件二、二、 媒體控制接口媒體控制接口MCI3nRIFF不是一種新的文件格式,而是基于MS Windows的應(yīng)用程序提供多媒體文件的框架和包絡(luò)。nRIFF提供了一種組織文件的標(biāo)準(zhǔn)方法,可通過加上新的標(biāo)記來將它擴(kuò)展。nRIFF是一種標(biāo)記文件格式,用標(biāo)記來標(biāo)識信息。nRIFF格式是面向主塊(Chunk)的,一個RIFF文件由一個或多個主塊組成,其中每一個主塊都指向下一主塊。每一

2、主塊都有一個類型,后面跟隨著一些數(shù)據(jù)。一、多媒體文件一、多媒體文件v多媒體文件格式多媒體文件格式資源文件交換格式資源文件交換格式(Resource interchange file format, RIFF) 4nRIFF文件的每個主塊含有一個4字符的ASCII串ID稱為標(biāo)記,另4字節(jié)說明主塊的長度,最后為主塊數(shù)據(jù),RIFF主塊的基本結(jié)構(gòu)如下: typedef unsigned long DWORD; typedef unsigned char BYTE; typedef DWORD FOURCC;typedef struct FOURCC ckID;/ 最多為4字符IDDWORD cksiz

3、e;/數(shù)據(jù)字節(jié)數(shù)BYTE ckDatackSize;/含有實際數(shù)據(jù)的數(shù)組 CK;5RIFF主塊RIFF主塊類型有nRIFF主塊 定義了RIFF文件的內(nèi)容n表主塊 允許嵌入額外的文件信息,如存檔位置、版權(quán)信息、生成日期等n子主塊 當(dāng)基本主塊不夠時,允許將更多的信息加到基本主塊上6RIFF主塊的組織4字節(jié)字節(jié)7RIFF的擴(kuò)展文件名文件類型文件類型格式類型格式類型文件擴(kuò)展名文件擴(kuò)展名波形音頻文件WAVE. WAV音頻視頻交錯文件AVI. AVIMIDI文件RMID. RMI獨立于設(shè)備的位圖文件RDIB. RDI調(diào)色板文件PAL. PAL多媒體電影RMN.RMN8WINDOWS的多媒體體系結(jié)構(gòu)的多媒體

4、體系結(jié)構(gòu)9多媒體服務(wù)nWindows系統(tǒng)以及MMSYSTEM擴(kuò)展部分提供了大量的多媒體服務(wù)函數(shù),根據(jù)服務(wù)對象大致分為:高層音頻服務(wù)(使用高層音頻播放函數(shù)或MCI)使用簡單,易于編程,但功能有限低層音頻服務(wù)(函數(shù)用wave,midi,aux加In或Out前綴組成)可靈活有效控制音頻,功能強(qiáng),但對編程知識和技巧要求高動畫播放服務(wù)(可使用MCI動畫命令或多媒體影片演播函數(shù))多媒體文件I/O服務(wù)(包括基本I/O、緩沖文件I/O和RIFF文件I/O,命令類似于mmioOpen,mmioCreateChunk)其他服務(wù)函數(shù)(操縱桿、計時器、屏幕保護(hù)等服務(wù))10v 從從RIFF文件中獲取信息文件中獲取信息

5、多媒體多媒體I/O函數(shù)函數(shù) 函數(shù)名稱函數(shù)功能mmioAdvance為mmioGetInfo 函數(shù)提供了增強(qiáng)的文件I/O緩沖區(qū)mmioAscend退出RIFF文件中的主塊mmioClose關(guān)閉由mmioOpen 打開的RIFF文件mmioCreateChunk在由mmioOpen 打開的RIFF文件中創(chuàng)建一個主塊mmioDescend進(jìn)入RIFF文件中的主塊mmioFlush將RIFF的文件緩沖寫入硬盤mmioGetInfo從由mmioOpen 打開的RIFF文件中讀入信息11mmioInstallIoProc安裝或除去一個定制的I/0進(jìn)程mmioOpen為輸入輸出打開一個文件mmioRead從

6、由mmioOpen打開的RIFF文件中讀入指定的字節(jié)數(shù)mmioRename將指定的RIFF文件更名mmioSeek改變由mmioOpen打開的RIFF文件中的文件指針位置mmioSetBuffer允許或禁止緩沖區(qū)I/OmmioSetInfo改變由mmioOpen打開的RIFF文件中的信息mmioStringToFOURCC將字符串轉(zhuǎn)換為4字符編碼mmioWrite向由mmioOpen打開的RIFF文件中寫入指定長度的字節(jié)數(shù)12v如何讀如何讀RIFF文件文件n在讀入在讀入RIFF文件時,首先必須打開文件時,首先必須打開RIFF文件,然后找到文件,然后找到自己感興趣的主塊的位置并把文件指針放在數(shù)據(jù)

7、的頂部自己感興趣的主塊的位置并把文件指針放在數(shù)據(jù)的頂部 HMMIO h;CString path;if ( (h=mmioOpen(path, NULL, MMIO_READ)=NULL) return FALSE;打開一個RIFF文件后,就可以從文件中讀出信息了: if ( mmioRead(h, &dataformat, (long)n)!=(long)n)mmioClose(h,0);return FALSE;13二、二、 媒體控制接口媒體控制接口(MCI) n媒體控制接口 (MCI, Multimedia Control Interface)成為控制媒體接口和外設(shè)的基本方法,提

8、供了一種與設(shè)備無關(guān)的控制多媒體外設(shè)的手段。nMCI設(shè)備類型MCI能夠控制兩類設(shè)備:簡單設(shè)備和復(fù)合設(shè)備。 簡單設(shè)備:不需要數(shù)據(jù)文件的設(shè)備,例如CD音頻播放設(shè)備。對于這類設(shè)備,其播放的媒體內(nèi)部已經(jīng)包含了所需的數(shù)據(jù)。復(fù)合設(shè)備:需要數(shù)據(jù)文件的設(shè)備,如波形音頻設(shè)備。 14vMCI所支持的設(shè)備類型 設(shè)備類型設(shè)備類型說明說明設(shè)備類型設(shè)備類型說明說明animation動畫設(shè)備scanner圖形掃描設(shè)備CdaudioCD音頻設(shè)備sequencerMIDI序列器Dat數(shù)字音頻設(shè)備 videodisc影碟播放設(shè)備Digitalvideo數(shù)字視頻設(shè)備 vcr錄像機(jī)設(shè)備other未定義設(shè)備waveaidio波形音頻設(shè)備

9、overlay疊加視頻設(shè)備 15vMCI函數(shù)接口函數(shù)接口 函數(shù)名稱函數(shù)名稱函數(shù)功能函數(shù)功能mciGetCreatorTask獲得指定MCI設(shè)備的任務(wù)指針mciGetDeviceID獲得MCI設(shè)備的標(biāo)識符mciGetErrorString獲得MCI錯誤信息mciGetYieldProc獲得回調(diào)函數(shù)的地址mciSendCommand向指定MCI設(shè)備發(fā)送命令消息mciSendString向指定MCI設(shè)備發(fā)送命令字符串mciSetYieldProc設(shè)置回調(diào)函數(shù)的地址161.mciGetCreatorTask 原型 HANDLE mciGetCreatorTask ( MCIDEVICEID IDDev

10、ice) 功能 獲得指定MCI設(shè)備的任務(wù)指針。 參數(shù) IDDevice 任務(wù)所返回的設(shè)備ID。 返值 如果函數(shù)成功執(zhí)行則返回所打開設(shè)備的指針,否則返回NULL。2.mciGetDeviceID原型 MCIDEVICEID mciGetDeviceID ( LPCTRSTR lpszDevice)功能 獲得MCI設(shè)備的標(biāo)識符。參數(shù) lpszDevice指定設(shè)備的名稱或別名的字符串。返值 如果函數(shù)執(zhí)行成功則返回指定設(shè)備的標(biāo)識符,否則返回0。執(zhí)行該函數(shù)所獲得的設(shè)備標(biāo)識符通常用于mciSendCommand函數(shù)。 173.mciGetErrorString 原型 BOOL mciGetErrorStr

11、ing (DWORD fdwError, LPTSTR lpszErrorText , UINT cchErrorText )功能 獲得MCI錯誤信息。參數(shù) fdwErrormciSendCommand或mciSendString函數(shù)返回的錯誤碼。lpszErrorText描述錯誤碼的字符串。 cchErrorTextlpszErrorText 字符串的長度。返值 如果函數(shù)執(zhí)行成功則返回TRUE,否則返回FALSE。184.mciGetYieldProc 原型 YIELDPROC mciGetYieldProc( MCIDEVICEID IDDevice, LPDWORD lpdwYieldD

12、ata);功能 獲得回調(diào)函數(shù)的地址。參數(shù) IDDeice 執(zhí)行MCI命令的設(shè)備標(biāo)識符。LpdwYieldData 將傳給回調(diào)函數(shù)的輸出數(shù)據(jù)緩沖區(qū)。返值 如果函數(shù)執(zhí)行成功則返回回調(diào)函數(shù)的地址,否則返回NULL。 195.mciSendCommand 原型 MCIERROR mciSendCommand( MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam) ;功能 向指定MCI設(shè)備發(fā)送命令消息。參數(shù) IDDevice接收MCI命令的設(shè)備標(biāo)識符。 uMsg命令消息。 FdwCommand MCI命令消息的標(biāo)識位。 dwP

13、aram為指向MCI命令消息數(shù)據(jù)結(jié)構(gòu)的指針。返值 如果函數(shù)執(zhí)行成功返回0。否則返回非0值。當(dāng)出現(xiàn)MCI錯誤時返回值的低位字包含錯誤信息。如果錯誤和設(shè)備有關(guān),則返回值的 高位字為設(shè)備的標(biāo)識符,否則高位字為0。將返回值傳給mciGetErrorString() 可以得到錯誤信息。 206.mciSendString 原型 MCIERROR mciSendString( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback) ;功能 向指定MCI設(shè)備發(fā)送命令字符串。參數(shù) lpszComman

14、d包含MCI命令的字符串。LpszReturnString 接收返回命令的字符串。 cchRerurn 接受返回信息的字符串大小。 HwndCallback 回調(diào)窗口句柄,該參數(shù)當(dāng)指定了notify標(biāo)志時有效。返值 如果函數(shù)成功執(zhí)行則返回0,否則返回非0值。當(dāng)出現(xiàn)MCI錯誤時返回值的低位字節(jié)包含錯誤信息。如果錯誤與設(shè)備無關(guān),則返回值的高位字為設(shè)備的標(biāo)識符,否則高位為0。將返回值傳給mciGetErrorString()可以得到錯誤信息。 217.mciSetYieldProc 原型 UINT mciSetYieldProc( MCIDEVICEID IDDevice, YIELDPROC yp

15、, DWORD dwYieldData) ;功能 設(shè)置回調(diào)函數(shù)的地址。參數(shù) IDDevice回調(diào)函數(shù)作用的MCI設(shè)備標(biāo)識符。yp 回調(diào)函數(shù)的地址。DwYieldData 傳送給回調(diào)函數(shù)的數(shù)據(jù)。返值 如果函數(shù)成功執(zhí)行返回TRUE,否則返回FALSE。 MCI對媒體播放設(shè)備的控制主要是通過命令接口函數(shù)對媒體播放設(shè)備的控制主要是通過命令接口函數(shù)mciSendCommand()和字符串接口函數(shù)和字符串接口函數(shù)mciSendString()來完來完成的成的 。調(diào)用命令接口函數(shù)之前需要初始化復(fù)雜的命令數(shù)據(jù)。調(diào)用命令接口函數(shù)之前需要初始化復(fù)雜的命令數(shù)據(jù)結(jié)構(gòu),因此它比命令字符串的使用更為復(fù)雜,相應(yīng)它也為結(jié)構(gòu),

16、因此它比命令字符串的使用更為復(fù)雜,相應(yīng)它也為MCI及其播放設(shè)備提供了更為強(qiáng)大的控制能力。及其播放設(shè)備提供了更為強(qiáng)大的控制能力。22v MCI命令消息命令消息 1.MCI_OPEN命令消息 使用該命令初始化設(shè)備或文件,所有的設(shè)備都能由這一命令打開。 MciSendCommand( MCIDEVICEID wDeviceID, MCI_OPEN, DWORD dwFlags, (DWORD)(LPMCI_OPEN_PARMS) lpOpen); wDeviceID 將接收命令信息的MCI設(shè)備ID;dwFlags 是命令消息的標(biāo)志,通常為MCI_WAIT和MCI_NOTIFY; lpOpen 為指向

17、MCI_OPEN_PARMS結(jié)構(gòu)的指針 23MCI_OPEN_PARMS數(shù)據(jù)結(jié)構(gòu)的定義:typedef struct DWORD dwCallback;MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; LPCSTR lpstrElementName;LPCSTR lpstrAlias; MCI_OPEN_PARMS; dwCallback 指定使用MCI_NOTIFY標(biāo)志的窗口句柄; wDeviceID返回MCI設(shè)備ID; lpstrDeviceType 為MCI設(shè)備類型,這與要播放的媒體文件一致; lpstrElementName 指向設(shè)備元素名稱

18、的指針,通常是一個路徑; lpstrAlias 為可選設(shè)備的別名。 242.MCI_SET 命令消息使用該命令設(shè)置設(shè)備信息 mciSendCommand (MCIDEVICEID wDeviceID, MCI_SET, DWORD dwFlags,(DWORD) (LPMCI_SET_PARMS) lpSet);wDeviceID 將接收命令信息的MCI設(shè)備ID;dwFlags 是命令消息的標(biāo)志,通常為MCI_WAIT和MCI_NOTIFY; lpSet 為指向MCI_SET_PARMS結(jié)構(gòu)的指針25MCI_SET_PARMS數(shù)據(jù)結(jié)構(gòu)的定義:typedef struct DWORD dwCal

19、lback;DWORD dwTimeFormat;DWORD dwAudio; MCI_SET_PARMS; dwCallback 指定使用MCI_NOTIFY標(biāo)志的窗口句柄; dwTimeFormat 為時間格式;dwAudio 為輸出聲管道; 263.MCI_STATUS命令消息 使用該命令以獲取設(shè)備信息mciSendCommand(MCIDEVICEID wDeviceID, MCI_STATUS, DWORD dwFlags,(DWORD) (LPMCI_STATUS_PARMS) lpStatus); lpStatus為指向MCI_STATUS_PARMS結(jié)構(gòu)的指針MCI_STATU

20、S_PARMS數(shù)據(jù)結(jié)構(gòu) :typedef struct DWORD dwCallback;/dwCallback為指定使用MCI_NOTIFY /標(biāo)志的窗口句柄 DWORD dwReturn;/dwReturn 包含返回信息 DWORD dwItem;/dwItem 為需要獲取的信息項 DWORD dwTrack;/dwTrack 為曲目的長度或曲目號。 MCI_STATUS_PARMS; 274. MCI_PLAY 命令消息使用該命令使設(shè)備播放媒體文件 mciSendCommand( MCIDEVICEID wDeviceID, MCI_PLAY, DWORD dwFlags,(DWORD)

21、 (LPMCI_PLAY_PARMS) lpPlay); MCI_PLAY_PARMS數(shù)據(jù)結(jié)構(gòu)的定義 typedef struct DWORD dwCallback;DWORD dwFrom;/dwFrom 為播放的起點; DWORD dwTo;/dwTo 為播放的終點 MCI_PLAY_PARMS; 3.2.2 波形音頻播放器一、 波形音頻基本知識 二、 波形音頻播放編程 三、 制作波形音頻播放器 29一、一、 波形音頻基本知識波形音頻基本知識 n波形音頻是一種電子數(shù)字聲音,一般用于儲存各種非音樂的音頻數(shù)據(jù),包括語音和聲音效果 n決定波形音頻文件質(zhì)量的因素主要有三個:采樣率、信息量和通道數(shù)。

22、n波形音頻文件的格式 :波形音頻文件為RIFF(多媒體資源交互文件格式)的一種。一個基本的波形文件的實際結(jié)構(gòu)是一個WAVE部分,它包含fmt部分和data部分。在fmt部分包括了波形文件信息的聲音信息,而在data部分則包括了具體的波形音頻數(shù)據(jù)。 30Fmt部分結(jié)構(gòu)的定義為:typedef struct pcmwave format_tag WAVEFORMAT wf; /WAVEFORMAT為儲存波形文件聲音信息的一個結(jié)構(gòu) WORD wBitesPerSample;/為波形文件聲音數(shù)據(jù)的每個采樣的位數(shù)PCMWAVEFORMAT; 結(jié)構(gòu)WAVEFORMAT的定義如下:typedef struc

23、t WORD wFormatTag;/波形文件編碼的形式 WORD nChannels;/波形文件的通道數(shù) DWORD nSamplesPerSec; /每秒樣本數(shù) DWORD nAvgBytesPerSec; /平均傳輸率 WORD nBlockAlign; /用位進(jìn)行塊校準(zhǔn) WAVEFORMAT;31定義波形記錄特性定義波形記錄特性包含波形的數(shù)據(jù)包含波形的數(shù)據(jù)32v 從波形文件讀出數(shù)據(jù)1.首先用mmioOpen 函數(shù)將波形文件打開,然后定位文件中的WAVE主塊。在結(jié)構(gòu)在結(jié)構(gòu)MMCKINFO中包含了有關(guān)主塊的信息,該結(jié)構(gòu)中包含了有關(guān)主塊的信息,該結(jié)構(gòu)定義如下:定義如下:typedef str

24、uct FOURCC ckid; /主塊標(biāo)識符DWORD cksize;/主塊的大小FOURCC fccType;/主塊類型DWORD dwDataOffset;/主塊在文件中的偏移量DWORD dwFlags;/主塊的標(biāo)志 MMCKINFO; 為進(jìn)入文件中的某主塊,應(yīng)將fccType 設(shè)置為需要定位的主塊類型 332.進(jìn)一步進(jìn)入fmt子主塊以獲得具體的波形文件信息 可從fmt部分中讀入PCMWAVEFORMAT的功能 3.當(dāng)讀出一個主塊的數(shù)據(jù)后,退出該主塊并準(zhǔn)備讀出下一個主塊的內(nèi)容 mmioAscend(h, (LPMMCKINFO)&mmSub, 0); 4.將波形文件數(shù)據(jù)部分讀入

25、內(nèi)存中,由mmioDescend 調(diào)用所返回的cksize 用于確定內(nèi)存的大小。 34GLOBALHANDLE wavehandle;HPSTR wavepointer; MmSub.ckid=mmioFOURCC (d, a, t, a); if (mmioDescend (h, (LPMMCKINFO) &mmSub, (LPMMCKINFO) &mmParent, MMIO_FINDCHUNK) mmioClose (h, 0); return FALSE; if(wavehandle=GlobalAlloc (GMEN_MOVEABLE|GMEM_SHARE, mmSu

26、b. ckSize) ) =NULL) mmioClose (h, 0); return FALSE; if (wavepointer=(HPSTR) GlobalLock (wavehandle) = NULL) mmioClose (h, 0); return FALSE; 35if (mmioRead (h, wavepointer, mmSub.cksize)!=mmSub.cksize) GlobalUnlock (wavehandle);GlobalFree (wavehandle); mmioClose (h, 0); return FALSE; GlobalUnlock (wa

27、vehandle); 36二、二、 波形音頻編程波形音頻編程 MFC為用戶提供的用于處理波形音頻文件的函數(shù)主要有4類:MessageBeep (播放對應(yīng)給定的系統(tǒng)報警波形聲音)PlaySound 和sndPlaySound (播放對應(yīng)給定的文件名或注冊項的波形聲音)MCI調(diào)用 Wave低級設(shè)備函數(shù) 其中前兩類為高層波形音頻函數(shù)37v 使用使用MessageBeep播放波形音頻播放波形音頻 The MessageBeep function plays a waveform sound. The waveform sound for each sound type is identified by

28、 an entry in the sounds section of the registry.BOOL MessageBeep(BOOL MessageBeep( UINTUINT uType / sound type ValueSoundFile0 xFFFFFFFFStandard beep using the computer speakerNoMB_ICONASTERISKSystemAsteriskchord.wavMB_ICONEXCLAMATIONSystemExclamationchord.wavMB_ICONHANDSystemHandchord.wavMB_ICONQUE

29、STIONSystemQuestionchord.wavMB_OKSystemDefaultding.wav38v 使用使用PlaySound播放波形音頻播放波形音頻 PlaySound函數(shù)能播放硬盤或應(yīng)用程序本身資源中的波形音頻文件,或在win.ini文件中所定義的系統(tǒng)聲音。BOOL BOOL PlaySoundPlaySound( ( LPCSTRLPCSTR pszSound, HMODULE, HMODULE hmodhmod, , DWORD fdwSound ); ); Parameters pszSound 為包含要播放的音頻文件名的字符串,如果該參數(shù)為NULL,停止播放所有波形

30、音頻文件。39v 使用使用PlaySound播放波形音頻播放波形音頻 hmod Handle of the executable file that contains the resource to be loaded. This parameter must be NULL unless SND_RESOURCE is specified in fdwSound. fdwSound Flags for playing the sound. PlaySound函數(shù)在播放波形音頻文件時,首先將音頻文件讀入內(nèi)存中再播放,因此所播放的音頻文件大小必須與系統(tǒng)當(dāng)前的空閑內(nèi)存適合。這一點正是PlaySou

31、nd函數(shù)最大局限所在,它一般只能用于播放較小的波形音頻文件。 40清單清單GetSoundToMem函數(shù)函數(shù)void* CwaveAudio:GetSoundToMem (DWORD dwSize)HGLOBAL Global;HGLOBAL* pGlobal;unsigned char* pMem; Global = GlobalAlloc (GMEM_FIXED, (DWORD) dwSize + 10); /分配內(nèi)存If (! Global) return (NULL); PMem= (unsigned char *) GlobalLock (Global); / 鎖住內(nèi)存PGlobal

32、 = (HGLOBAL*) pMem;*pGlobal = Global;pMem + = sizeof (HGLOBAL); return (pMem); 41清單清單 FreeMemvoid CwaveAudio:FreeMem (void far *pMem)HGLOBAL Global;HGLOBAL *pGlobal;unsigned char * pUChar; pUChar= (unsigned char *) pMem;pUChar- = sizeof (HGLOBAL); pGlobal= (HGLOBAL*) pUChar;Global= *pUChar; GlobalUn

33、lock (Global);GlobalFree (Global); 42CString Filename; /波形音頻文件名Void * m_pSoundData; /波形音頻數(shù)據(jù)在內(nèi)存中的指針Cfile File;If (! File.Open (Filename, Cfile:modeRead) /打開波形音頻文件Return FALSE; DWORD dwLength= File.GetLength(); / 得到波形音頻文件的長度 m_pSoundData= AllocMem (dwLength);if (!m_pSoundData) File.Close();Return FALS

34、E; if (File.ReadHuge (m_pSoundData,dwLength) != dwLength) /將波形音頻文件讀入內(nèi)存中File.Close ();Return FALSE;File.Close ();PlaySound(char*)m_pSoundData,NULL, SND_MEMORY|SND_ASYNC|SND_NOSTOP);FreeMem (m_pSoundData); 43v 使用使用MCI播放波形音頻播放波形音頻 與播放與播放WAV音頻相關(guān)的音頻相關(guān)的MCI命令命令 MCI命令命令命令功能命令功能MCI命令命令命令功能命令功能MCI_OPEN打開波形設(shè)備M

35、CI_SET設(shè)置波形文件MCI_CLOSE關(guān)閉波形設(shè)備MCI_STATUS得到波形文件的信息MCI_PLAY播放波形音頻文件MCI_RECORD 錄制波形音頻MCI_STOP停止播放波形音頻文件MCI_SAVE 存儲所錄制的波形音頻 MCI_SEEK跳到波形音頻文件的指定位置44波形音頻常用的波形音頻常用的MCI_SET標(biāo)志標(biāo)志 標(biāo)志標(biāo)志標(biāo)志含義標(biāo)志含義MCI_WAVE_SET_BITSPERSAMPLE設(shè)置播放或錄制波形文件時每秒采樣位數(shù)MCI_WAVE_SET_AVGBYTESPERSEC設(shè)置播放或錄制波形文件時每秒字節(jié)數(shù)MCI_WAVE_SET_FORMATTAG設(shè)置播放或錄制波形文件格

36、式MCI_WAVE_SET_SAMPLESPERSEC設(shè)置播放或錄制波形文件每秒采樣數(shù)MCI_WAVE_INPUT設(shè)置錄制波形文件的輸入設(shè)備MCI_WAVE_OUTPUT設(shè)置播放波形文件的輸出設(shè)備45波形音頻常用的波形音頻常用的MCI_STATUS標(biāo)志標(biāo)志注意:注意:所得的返回信息保存在MCI_STATUS結(jié)構(gòu)的dwReturn數(shù)據(jù)成員中 標(biāo)志標(biāo)志標(biāo)志含義標(biāo)志含義MCI_WAVE_FORMATTG獲得波形文件的格式MCI_WAVE_INPUT獲得波形文件的輸入設(shè)備MCI_WAVE_OUTPUT獲得波形文件的輸出設(shè)備MCI_WAVE_STATUS_CHANNELS獲得播放波形文件的聲道數(shù)目MCI

37、_WAVE_STATUS_BITSPERSAMPLE獲得播放或錄制波形文件時每秒的采樣位數(shù)MCI_WAVE_STATUS_AVGBYTESPERSEC獲得播放或錄制波形文件時每秒的字節(jié)數(shù)46v 波形音頻的波形音頻的MCI編程步驟編程步驟 n使用MCI處理波形音頻的一般步驟是: 首先打開播放波形音頻的MCI設(shè)備; 然后使用MCI設(shè)備處理波形音頻; 處理完畢后關(guān)閉MCI設(shè)備。 471) 打開播放波形音頻設(shè)備 WORD m_wDeveceID; /MCI設(shè)備IDCString FileName; /波形文件名MCI_OPEN_PARMS OpenParms;/ MCI設(shè)備打開參數(shù)OpenParms.lpstrDeviceType = “wave

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論