使用windows API播放声音文件(wav、mp3)等
来源:互联网 发布:国外用什么网络 编辑:程序博客网 时间:2024/04/28 05:34
软件:
vs2010
工程:
控制台程序(空工程)
代码如下:
/*
mciSendCommand播放音乐,调用简单,功能强大,但是它只能同时播放一个
文件,而有的项目中需要同时播放几个文件,实现混音效果,这时就要使用
DirectSound或者其它库或技术了!
*/
#include <Windows.h>
#include <MMSystem.h>
#include <map>
#include <iostream>
using namespace std;
#pragma comment(lib, "WINMM.LIB")
void PlayBeep()
{
Beep(3000,500);
}
void PlaySysMusic()
{
MessageBeep(MB_OK);
Sleep(800);
MessageBeep(MB_ICONWARNING);
Sleep(800);
MessageBeep(MB_ICONSTOP);
Sleep(800);
MessageBeep(MB_ICONERROR);
Sleep(800);
MessageBeep(MB_ICONEXCLAMATION);
}
void PlayWavMusic()
{
PlaySound("GAME_WIN.WAV",NULL/*AfxGetInstanceHandle()*/, SND_FILENAME|SND_ASYNC);
}
void PlayMp3Music_1()
{
mciSendString("open bg.mp3" , NULL, 0, 0);
mciSendString("play bg.mp3", NULL, 0, 0);
}
void PlayMp3Music_2()
{
MCI_OPEN_PARMS MciOpen;
MCI_PLAY_PARMS MciPlay;
MciOpen.lpstrElementName="ten minutes.mp3";
MciOpen.lpstrDeviceType=NULL;
mciSendCommand(0,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&MciOpen);
UINT wDeviceID=MciOpen.wDeviceID;
mciSendCommand(wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)& MciPlay);
}
#define TIMER_MUSIC_STATE 100
MCI_OPEN_PARMS gMciOpen;
MCI_PLAY_PARMS gMciPlay;
MCI_STATUS_PARMS gStatus;
map<UINT_PTR,int> mapTimer;
void CheckMusicState()
{
//播放文件长度
gStatus.dwItem = MCI_STATUS_LENGTH;
mciSendCommand (gMciOpen.wDeviceID, MCI_STATUS,MCI_WAIT | MCI_STATUS_ITEM,(DWORD)(LPVOID) &gStatus);
DWORD dwLen=gStatus.dwReturn;
//当前播放长度
gStatus.dwItem = MCI_STATUS_POSITION;
mciSendCommand (gMciOpen.wDeviceID, MCI_STATUS,MCI_WAIT | MCI_STATUS_ITEM,(DWORD)(LPVOID) &gStatus);
DWORD dwCurLen=gStatus.dwReturn;
cout<<"文件长度: "<<dwLen<<",当前播放位置: "<<dwCurLen<<endl;
//循环播放
if(dwLen==dwCurLen)
{
mciSendCommand (gMciOpen.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START, NULL);
mciSendCommand(gMciOpen.wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)& gMciPlay);
}
}
void CALLBACK TimerProc(HWND, UINT message, UINT_PTR idTimer, DWORD dwTime)
{
if(WM_TIMER==message)
{
switch(mapTimer[idTimer])
{
case TIMER_MUSIC_STATE:
CheckMusicState();
break;
default:
break;
}
}
}
void PlayMp3Music_3()
{
gMciOpen.lpstrElementName="ten minutes.mp3";
gMciOpen.lpstrDeviceType=NULL;
mciSendCommand(0,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&gMciOpen);
mciSendCommand(gMciOpen.wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)& gMciPlay);
UINT_PTR timer=SetTimer(NULL,TIMER_MUSIC_STATE,1000,TimerProc);
mapTimer.insert(make_pair<UINT_PTR,int>(timer,TIMER_MUSIC_STATE));
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
if(msg.message==WM_TIMER)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
int main()
{
//播放蜂鸣器
//PlayBeep();
//播放系统声音(wav格式)
//PlaySysMusic();
//播放自己的wav格式的声音
//PlayWavMusic();
//播放MP3(当然wav也能播放)
//PlayMp3Music_1();
//播放MP3
//PlayMp3Music_2();
//播放MP3(循环播放、当前进度)
PlayMp3Music_3();
system("pause");
return 0;
}
- 使用windows API播放声音文件(wav、mp3)等
- 使用DirectX播放wav声音文件
- windows播放wav声音文件--java播放wav完整demo
- c++播放wav声音文件
- c++播放wav声音文件
- QT播放.WAV声音文件
- java 播放 wav 声音文件
- 使用LibMad解码MP3,Windows上播放MP3,MP3转WAV实例代码
- Java编程播放.wav或.au等声音文件
- BlackBerry 10:Qt中使用OpenAL播放wav声音文件
- 使用ActiveMovie控件制作多媒体播放器(支持MP3,WAV,dat,wma,mpeg,avi等)
- Linux Ubuntu 使用play命令播放音乐 mp3 wav 等文件
- MFC使用Windows media player播放声音文件
- C#播放wav,MP3
- MP3/WAV 播放
- iphone利用AudioQueue播放音频文件(mp3,aac,caf,wav等)
- iphone利用AudioQueue播放音频文件(mp3,aac,caf,wav等)
- iphone利用AudioQueue播放音频文件(mp3,aac,caf,wav等)
- 移动硬盘出现 文件目录损坏且无法读取 解决方法教程(二)
- 理解Load Average做好压力测试
- 2015Astar百度之星初赛 1001 超级赛亚ACMer
- 黑马程序员_正则表达式总结
- 荷塘月色
- 使用windows API播放声音文件(wav、mp3)等
- WebLogic(12C)——安装教程
- 【操作系统总结】动态分区分配算法
- android 源码编译
- B\S备忘录17——cas服务端配置
- PHP模板Smarty的具体使用指南
- P124 第三章 41题 验证哥德巴猜想
- iOS支付宝密码框Demo/微信密码框/邀请码/验证码
- python re 模块 findall 函数用法简述