mci 播放wave文件不成功
本帖最后由 yakczh_cu 于 2016-09-11 18:43 编辑#include <stdio.h>
#include <Windows.h>
#include "mmsystem.h"
#pragma comment(lib, "winmm.lib")
int main()
{
UINT wDeviceID;
DWORD dwReturn;
MCI_OPEN_PARMS mciOpenParms;
MCI_PLAY_PARMS mciPlayParms;
//***************************************************************************
mciOpenParms.lpstrDeviceType = "WaveAudio";
mciOpenParms.lpstrElementName ="44.wav";
if (dwReturn = mciSendCommand(0, MCI_OPEN,//这里是打开wave设备
MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,
(DWORD)(LPVOID) &mciOpenParms))
{
// Failed to open device; don't close it, just return error.
char buffer;
mciGetErrorString(dwReturn, buffer,sizeof(buffer));
printf("error -> %s",buffer);
}
if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY,
(DWORD)(LPVOID) &mciPlayParms))
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
return (dwReturn);
}
return 0;
}
运行也不报错,但也没有声音,wav文件是存在的 用midiaplay可以播放
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
const char* MciGetErrorString( DWORD MciReturn )
{
static char buffer;
mciGetErrorStringA( MciReturn, buffer, sizeof(buffer) );
return buffer;
}
int main( void )
{
MCI_OPEN_PARMSA mciOpenParms;
mciOpenParms.lpstrDeviceType = "WaveAudio";
mciOpenParms.lpstrElementName = "44.wav";
DWORD dwReturn = mciSendCommandA( 0, MCI_OPEN, MCI_OPEN_ELEMENT|MCI_OPEN_TYPE, (DWORD_PTR)&mciOpenParms );
if( dwReturn != 0 )
printf( "error -> %s\n", MciGetErrorString(dwReturn) );
else
{
dwReturn = mciSendCommand( mciOpenParms.wDeviceID, MCI_PLAY, MCI_WAIT, NULL );
if( dwReturn != 0 )
printf( "error -> %s\n", MciGetErrorString(dwReturn) );
mciSendCommand( mciOpenParms.wDeviceID, MCI_CLOSE, 0, NULL );
}
return dwReturn==0;
} 本帖最后由 yakczh_cu 于 2016-09-12 21:56 编辑
回复 2# bruceteen
再请教一下,我装了个虚拟声卡,这样可以用程序实现内录电脑中的音频数据,但是要录音首先把默认播放设备设置成虚拟声卡, 要听录音文件效果的时候再把默认播放设备切换成扬声器, 有没有办法可以录音的时候实现就实现播放声音文件到耳机(或者其他设备) ?
页:
[1]