利用MCI命令进行 播放录制音乐,以及弹出光驱,音量控制获得播放进度等等操作。。。开发必备。
2012-01-12 15:04
615 查看
关于MCI的命令以及操作 很复杂 各种宏 这里简单的列举了几个例子 实际开发中 如果用到MCI那么我们去研究微软的 Mmsystem.h头文件、、、
MCI的使用时要先打开设备 然后再操作设备 。
1、开始录制音乐 录制时候使用的设备是waveaudio 波形音频设备 支持wav
DWORD id ;
MCI_OPEN_PARMS pr;
pr.lpstrDeviceType=_T("waveaudio") ; //设备类型
pr.lpstrElementName=L"" ; //一定要初始否则无法录音
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)&pr) ; //打开设备 并且填充设备信息)
id=pr.wDeviceID ; //保存设备信息
MCI_RECORD_PARMS rpr; //录音结构体
mciSendCommand(pr.wDeviceID,MCI_RECORD,NULL,(DWORD)&rpr) ;//开始录制音乐
2、停止录音并且保存到文件
mciSendCommand(id,MCI_STOP,NULL,NULL) ;//停止录音 )
MCI_S***E_PARMS spr; //保存录音
spr.lpfilename=_T("c:\\record.wav"); //保存录音路径
mciSendCommand(id,MCI_S***E,MCI_S***E_FILE,(DWORD)&spr) ;//保存到指定路径)
3、播放MP3文件
MCI_OPEN_PARMS rm ;
rm.lpstrDeviceType="mpegvideo" ; //指定设备类型
rm.lpstrElementName=mp3File.c_str(); //MP3文件的路径
MCI_PLAY_PARMS pm ;
pm.dwFrom=0 ; //起始位置从0开始
MCIERROR err ;
if(0!=(err=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_SHAREABLE|MCI_OPEN_TYPE|MCI_OPEN_ELEMENT|MCI_WAIT,(DWORD)&rm))) //第一次打开设备的时回
{
cout<<"错误信息如下:"<<endl ;
char buf[100]="" ;
UINT t =100;
mciGetErrorString(err,buf,t); //利用返回的 MCIERROR来获得错误信息
cout<< buf<<endl ;
return ;
}
mciSendCommand(rm.wDeviceID,MCI_PLAY,0,(DWORD)&pm) ; //发送完成命令后立即返回
4、 弹出光驱
MCI_OPEN_PARMS parm ;//打开参数
parm.lpstrDeviceType="CDAUDIO" ; //设备类型为光驱 指定设备类型为CD_ROM
mciSendCommand(NULL,MCI_OPEN,MCI_WAIT|MCI_OPEN_TYPE,(DWORD)&parm ) ; //初始化光驱 并且是参数中的 光驱类型有效
mciSendCommand(MCI_ALL_DEVICE_ID,MCI_SET,MCI_SET_DOOR_OPEN,NULL) ;//打开光驱 对光驱进行操作
5.暂停设备操作
mciSendCommand(mciOpen.wDeviceID,MCI_PAUSE,NULL ,NULL);
6. 停止设备操作
mciSendCommand(mciOpen.wDeviceID,MCI_STOP,NULL ,NULL);
mciSendCommand(mciOpen.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START ,NULL);
7.获得播放进度
mciStatusParms.dwItem=MCI_STATUS_POSITION; mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);//关键,取得位置
int m_dPosition=mciStatusParms.dwReturn;
8、获得整个音频的时间长度
UINT DeviceID = mciOpen.wDeviceID ;
mciStatusParms.dwItem=MCI_STATUS_LENGTH;
mciSendCommand(DeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);//关键,取得长度
m_dLength=mciStatusParms.dwReturn;
9.在指定位置播放
MCI_PLAY_PARMS mciPlay;
mciPlay.dwFrom=m_dPosition;
mciError = mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_FROM,(DWORD)&mciPlay);
10.控制音量
MCI_DGV_SETAUDIO_PARMS mciSetAudioPara;
mciSetAudioPara.dwItem = MCI_DGV_SETAUDIO_VOLUME;
mciSetAudioPara.dwValue = atoi(m_Volume.GetBuffer(m_Volume.GetLength())); //here is the value of the Volume(0--1000)
mciSendCommand(m_wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, (DWORD)(LPVOID)&mciSetAudioPara);
MCI的使用时要先打开设备 然后再操作设备 。
1、开始录制音乐 录制时候使用的设备是waveaudio 波形音频设备 支持wav
DWORD id ;
MCI_OPEN_PARMS pr;
pr.lpstrDeviceType=_T("waveaudio") ; //设备类型
pr.lpstrElementName=L"" ; //一定要初始否则无法录音
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)&pr) ; //打开设备 并且填充设备信息)
id=pr.wDeviceID ; //保存设备信息
MCI_RECORD_PARMS rpr; //录音结构体
mciSendCommand(pr.wDeviceID,MCI_RECORD,NULL,(DWORD)&rpr) ;//开始录制音乐
2、停止录音并且保存到文件
mciSendCommand(id,MCI_STOP,NULL,NULL) ;//停止录音 )
MCI_S***E_PARMS spr; //保存录音
spr.lpfilename=_T("c:\\record.wav"); //保存录音路径
mciSendCommand(id,MCI_S***E,MCI_S***E_FILE,(DWORD)&spr) ;//保存到指定路径)
3、播放MP3文件
MCI_OPEN_PARMS rm ;
rm.lpstrDeviceType="mpegvideo" ; //指定设备类型
rm.lpstrElementName=mp3File.c_str(); //MP3文件的路径
MCI_PLAY_PARMS pm ;
pm.dwFrom=0 ; //起始位置从0开始
MCIERROR err ;
if(0!=(err=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_SHAREABLE|MCI_OPEN_TYPE|MCI_OPEN_ELEMENT|MCI_WAIT,(DWORD)&rm))) //第一次打开设备的时回
{
cout<<"错误信息如下:"<<endl ;
char buf[100]="" ;
UINT t =100;
mciGetErrorString(err,buf,t); //利用返回的 MCIERROR来获得错误信息
cout<< buf<<endl ;
return ;
}
mciSendCommand(rm.wDeviceID,MCI_PLAY,0,(DWORD)&pm) ; //发送完成命令后立即返回
4、 弹出光驱
MCI_OPEN_PARMS parm ;//打开参数
parm.lpstrDeviceType="CDAUDIO" ; //设备类型为光驱 指定设备类型为CD_ROM
mciSendCommand(NULL,MCI_OPEN,MCI_WAIT|MCI_OPEN_TYPE,(DWORD)&parm ) ; //初始化光驱 并且是参数中的 光驱类型有效
mciSendCommand(MCI_ALL_DEVICE_ID,MCI_SET,MCI_SET_DOOR_OPEN,NULL) ;//打开光驱 对光驱进行操作
5.暂停设备操作
mciSendCommand(mciOpen.wDeviceID,MCI_PAUSE,NULL ,NULL);
6. 停止设备操作
mciSendCommand(mciOpen.wDeviceID,MCI_STOP,NULL ,NULL);
mciSendCommand(mciOpen.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START ,NULL);
7.获得播放进度
mciStatusParms.dwItem=MCI_STATUS_POSITION; mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);//关键,取得位置
int m_dPosition=mciStatusParms.dwReturn;
8、获得整个音频的时间长度
UINT DeviceID = mciOpen.wDeviceID ;
mciStatusParms.dwItem=MCI_STATUS_LENGTH;
mciSendCommand(DeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);//关键,取得长度
m_dLength=mciStatusParms.dwReturn;
9.在指定位置播放
MCI_PLAY_PARMS mciPlay;
mciPlay.dwFrom=m_dPosition;
mciError = mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_FROM,(DWORD)&mciPlay);
10.控制音量
MCI_DGV_SETAUDIO_PARMS mciSetAudioPara;
mciSetAudioPara.dwItem = MCI_DGV_SETAUDIO_VOLUME;
mciSetAudioPara.dwValue = atoi(m_Volume.GetBuffer(m_Volume.GetLength())); //here is the value of the Volume(0--1000)
mciSendCommand(m_wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, (DWORD)(LPVOID)&mciSetAudioPara);
相关文章推荐
- 利用MCI命令进行 播放录制音乐,以及弹出光驱,音量控制获得播放进度等等操作。。。开发必备。
- 利用MCI命令进行 播放录制音乐,以及弹出光驱,音量控制获得播放进度等等操作。。。开发必备。
- 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
- Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效
- [置顶] 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
- 音乐播放器项目技术之一音乐播放进度及音量的控制
- Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- tomcat开发远程调试端口以及利用eclipse进行远程调试
- Linux-Ubuntu下配置 Github ,使用 git命令操作进行版本控制
- Android 播放器中容易用到的进度条(音量控制,播放进度)
- MongoDB数据库的基本操作命令以及和mysql进行比较
- MongoDB数据库的基本操作命令以及和mysql进行比较
- IOS 控制音量并实现后台播放音乐
- 树的基本结构,以及利用链表实现树的各项操作(创建、添加/删除/打印树节点、销毁等等)
- 【Android】Android开发可以手动进行控制的跑马灯效果,包括从左到右,以及从右到左,
- MongoDB数据库的基本操作命令以及和mysql进行比较
- MongoDB数据库的基本操作命令以及和mysql进行比较
- 【iOS-Cocos2d游戏开发之二十二 】CCSpeed实现CCAnimate动画进行时设置慢动作以及设置游戏加减速进行(塔防游戏必备)!
- 利用百度地图SDK进行开发时申请key和基本配置以及一个小问题