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

简介: 关于MCI的命令以及操作 很复杂 各种宏 这里简单的列举了几个例子  实际开发中 如果用到MCI那么我们去研究微软的 Mmsystem.h头文件、、、  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); 


 

目录
相关文章
|
语音技术
FreeSwitch中音乐功能保持和静音回铃声怎样设置
FreeSwitch中音乐功能保持和静音回铃声怎样设置
点击视频播放切换隐藏--添加播放图片按钮
点击视频播放切换隐藏--添加播放图片按钮
|
9月前
|
存储 移动开发 小程序
小程序:播放视频
小程序:播放视频
259 0
|
11月前
|
移动开发
【H5 音乐播放实例】第四节 音乐详情页制作 -音乐的播放和暂停
【H5 音乐播放实例】第四节 音乐详情页制作 -音乐的播放和暂停
107 0
|
编解码 算法 数据安全/隐私保护
TechSmith Camtasia Studio2022专门录制屏幕动作的工具
Camtasia Studio是TechSmith旗下一款专门录制屏幕动作的工具,它能在任何颜色模式下轻松地记录屏幕动作,包括影像、音效、鼠标移动轨迹、解说声音等等。
298 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(二)
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(二)
701 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(二)
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
501 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(一)
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(一)
1427 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(一)
|
编解码 Android开发 索引
【Android FFMPEG 开发】FFMPEG 视频播放进度控制 ( 显示播放进度 | 拖动进度条播放 )
【Android FFMPEG 开发】FFMPEG 视频播放进度控制 ( 显示播放进度 | 拖动进度条播放 )
515 0