|
波形音频文件就是我们常用的WAVE文件(以.WAV为扩展名的文件),它有采样率、位长、通道数(单声道或者立体声)等参数决定声音的质量。
我们可以利用MFC的四种方法来处理WAVE:
○ MessageBeep(它提供播放简单的Windows系统声音)比如:MessageBeep(MB_OK);
○ PlaySound(它已经能够满足用户播放WAVE文件,但它不适用于复杂的声音播放编程,而且比较简单不做详细介绍)
函数原型:BOOL PlaySound(LPCSTR pszSound,HMODULE hmod,DWORD fdwsound);其中三个参数用法可以在MSDN查到。
○ MCI的调用
多媒体编程大多都用MCI,原因是它功能强大,但使用起来又比较简单,很快能做出来专业的多媒程序
○ WAVE低级设备函数(这一层功能更为强大,能实现比如声音,音调等控制,但使用复杂。有机会以后再介绍)
通过MCI的调用实现WAVE的播放
使用MCI处理WAVE的步骤是:首先打开播放波形音频的MCI设备;然后使用MCI设备处理波形音频;处理完毕后关闭MCI设备。呵呵,就这么简单!这些步骤都是调用mciSendCommand()实现的。
打开波形音频设备:
WORD m_wDeviceID;
CString FileName;
..........
MCI_OPEN_PARMS OpenParms;
OpenParms.lpstrDeviceType = "waveaudio";
OpenParms.lpstrElementName = Filename;
if (mciSendCommand(NULL, MCI_OPEN,
MCI_OPEN_ELEMENT | MCI_OPEN_TYPE, (DWORD)(LPVOID) &OpenParms))
return FALSE;
m_wDeviceID = OpenParms.wDeviceID;
MCI_SET_PARMS SetParms;
SetParms.dwTimeFormat=MCI_FORMAT_MILLISECONDS;
if(mciSendCommand(m_wDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD)(LPVOID)
&SetParms))
return FALSE;
return TRUE;
播放波形音频:
MCI_PLAY_PARMS PlayParms;
mciSendCommand (m_wDeviceID, MCI_SEEK,
MCI_SEEK_TO_START, NULL);
if (mciSendCommand (m_wDeviceID,
MCI_PLAY, NULL, (DWORD)(LPVOID) &PlayParms)) return FALSE;
else return TRUE;
停止播放:
mciSendCommand (m_wDeviceID, MCI_STOP,
NULL, NULL);
关闭波形音频设备:
if (m_wDeviceID){ mciSendCommand
(m_wDeviceID, MCI_STOP, MCI_WAIT, NULL);
mciSendCommand (m_wDeviceID, MCI_CLOSE,
NULL, NULL); }
我们现在可以做出来一个WAVE播放器了(原代码:gp_media.zip,程序:gp_media.exe),用MCI的调用做了一个类,这样以后就更加方便了!以后逐步把这个程序完善。
|