wave播放

小的wave播放比较简单,用sndPlaySound可以搞定

#include "mmsystem.h"
#pragma comment(lib,"winmm.lib")

//---------------播放-----------

sndPlaySound("e://wav//nyt.wav",SND_ASYNC);   //第一参数为播放文件路径,第二为播放同时继续下条语句

//-----------------停止----------------------

sndPlaySound(NULL,0);

文件大些时,比如当WAVE文件大于100K时,这时候系统无法将声音数据一次性的读入内存,sndPlaySound函数就不能进行播放(听别人说的,但我用了400k的都没问题),这时可以用mci,主要是用mciSendCommand实现,

//----------------初始化参数-------------------

MCI_OPEN_PARMS openParms;
 MCI_PLAY_PARMS playParms;

openParms.dwCallback = 0;
 openParms.lpstrAlias = "";
 openParms.lpstrDeviceType = "waveaudio";                             //类型为wave
 openParms.lpstrElementName = "e://wav//nyt.wav";               //播放的文件路径
 playParms.dwCallback = 0;
 playParms.dwFrom = 0;
 playParms.dwTo = 0;

//---------------------打开文件---------------------

 mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)((LPVOID)&openParms));

//-----------------------关闭文件------------------------------------

mciSendCommand(openParms.wDeviceID,MCI_CLOSE,0,0);

//-------------------------播放-----------------------------------------------

mciSendCommand(openParms.wDeviceID,MCI_PLAY,MCI_WAIT,(DWORD)(LPVOID)(&playParms));

//--------------------------停止--------------------

mciSendCommand(openParms.wDeviceID,MCI_STOP,0,0);

//---------------------------暂停--------------------------

mciSendCommand(openParms.wDeviceID,MCI_PAUSE,0,(DWORD)(LPVOID)(&playParms));

//我发现用mci时程序会死在那,后来自己干脆写了一个播放线程就ok了,sndPlaySound没这方面的问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值