利用MCI命令进行 播放录制音乐,以及弹出光驱,音量控制获得播放进度等等操作。。。开发必备。

关于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_SAVE_PARMS spr;   //保存录音
   spr.lpfilename=_T("c:\\record.wav");   //保存录音路径 
  mciSendCommand(id,MCI_SAVE,MCI_SAVE_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); 

 

时间: 2025-01-27 06:04:56

利用MCI命令进行 播放录制音乐,以及弹出光驱,音量控制获得播放进度等等操作。。。开发必备。的相关文章

跳转-如何设置点击音乐文件弹出我的音乐播放器并自动播放点击的音乐文件

问题描述 如何设置点击音乐文件弹出我的音乐播放器并自动播放点击的音乐文件 2C 现在的功能实现了点击音乐文件能弹出我的音乐播放器界面,但是不能自动播放音乐,请问这个怎么解决啊? 解决方案 能弹出(也就是启动)你的音乐播放器,接下来就是你的音乐播放器的编程工作了.音乐播放器,可以获取到点击的音乐文件名吗?如果能,直接播放就行:如果不能,就要想办法将点击的音乐文件名传给你的音乐播放器. 解决方案二: 现在就是只能弹出播放器界面,音乐文件获取不到,点击播放器的按钮播放的也不是之前点击的音乐文件.这个该

利用JQuery制作符合Web标准的QQ弹出消息

 本篇文章主要介绍了利用JQuery制作符合Web标准的QQ弹出消息.这里所说的弹出消息指的是在网页右下角升起又下去的那种框框,在这里用到了jQuery的自定义动画 这里所说的弹出消息指的是在网页右下角升起又下去的那种框框,在这里用到了jQuery的自定义动画,感觉这个自定义动画就是像flash里的形状和渐变动画一样,只要定义了开头和结尾的两个关键帧,中间的动画过程会自动完成,不用会jQuery的可去查下jQuery的帮助文档.    基本思路是这样子滴:首先弹出消息框其实就是一个div层,页面

ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦弹出窗口,并可以播放音频文件

原文:ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦弹出窗口,并可以播放音频文件 先看效果图,然后上代码: <UserControl x:Class="MapClient.PicMusic" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx

利用DW MX自带的行为制作弹出菜单(组图)

菜单 不知道大家有没发现DWMX中有一个和FW差不多的制作弹出菜单功能?这个功能允许用文字和图片做为主菜单,如果用文字的话要先做虚拟链接.下面简单和大家说说制作的过程! 1.我这次是用图片,先在DWMX中新建一个页面,插入图片.选取图片,打开行为窗口,点击+号,选取"显示弹出式菜单"选项,这时候DWMX就打开一个窗口如下图: 大家可以看到有四个选项,分别为:"内容.外观.高级.位置" 2.在文本框写上你的菜单名称,通过点击+号来增加你所需菜单数目如下图: 如果你的菜

利用Dreamweaver mx自带的行为制作弹出菜单

dreamweaver|菜单 不知道大家有没发现DWMX中有一个和FW差不多的制作弹出菜单功能?这个功能允许用文字和图片做为主菜单,如果用文字的话要先做虚拟链接.下面简单和大家说说制作的过程! 1.我这次是用图片,先在DWMX中新建一个页面,插入图片.选取图片,打开行为窗口,点击+号,选取"显示弹出式菜单"选项,这时候DWMX就打开一个窗口如下图: 大家可以看到有四个选项,分别为:"内容.外观.高级.位置". 2.在文本框写上你的菜单名称,通过点击+号来增加你所需菜

利用JQuery制作符合Web标准的QQ弹出消息_jquery

这里所说的弹出消息指的是在网页右下角升起又下去的那种框框,在这里用到了jQuery的自定义动画,感觉这个自定义动画就是像flash里的形状和渐变动画一样,只要定义了开头和结尾的两个关键帧,中间的动画过程会自动完成,不用会jQuery的可去查下jQuery的帮助文档. 基本思路是这样子滴:首先弹出消息框其实就是一个div层,页面加载完了以后我们应该通过CSS把div层定位到页面右下角的下方,并且把他隐藏起来,然后当我们点击页面中的按钮的时候就触发动画函数,div层开始从下往上升,在这里我们为了增加

Android命令行播放MP3音乐

/*************************************************************************** * Android命令行播放MP3音乐 * 说明: * 有时候我们会遇到Touch不能使用,也没有鼠标,但是我们要在Android上测试 * 声卡情况,所以我们会想到在adb或者debug终端上使用命令行来播放声音. * * 2016-5-26 深圳 南山平山村 曾剑锋 *************************************

传华纳音乐拟7.5亿美元收购百代录制音乐部门

北京时间11月15日晚间消息,据国外媒体报道,华尔街消息人士透露,华纳音乐(Warner Music)(WMG)正在考虑一项计划,将以4.7亿英镑(约合7.5亿美元)的价格对百代唱片(EMI)旗下录制音乐部门发起收购要约,称其可能会在未来几周内向百代唱片的所有者私募股权投资公司泰丰资本(Terra Firma)提出这项要约. 虽然泰丰资本董事长葛涵思(Guy Hands)曾在此前表示,他无意出售百代唱片旗下录制音乐部门,但业界认为这家公司将面临着来自于花旗集团的压力,因而不得不出售这项资产.在泰

通过Linux命令实现屏幕录制和回放

平时在工作学习中如果可以录屏的话,那么在以后能够再看真是很难得的学习资料.有些远程的操作都是命令行,如果使用录屏软件,可能占用的空间极大.其实Linux中可以通过命令行来实现屏幕录制和屏幕回放. 如果自己需要给别人演示一些操作,可能事先已经准备好了,在演示的时候只需要播放即可. 或者在系统升级的时候需要保留必要的日志,在以后可以更加有针对性的总结,都可以通过屏幕录制功能来完成. 我们需要系统中已经安装script,scriptreplay. 比如我们可以通过如下的方式来完成.简单运行几个命令,然