VC6.0播放MP3文件

播放MP3音乐   
 
  MIDI音乐的问题是对声卡的依赖性过大,好声卡和差声卡的播放效果实在相差太远。WAV音乐虽然绝对足够精确,但占用的空间之大不可小视。MP3恐怕是一个较好的解决方案。值得注意的是,播放MP3并不需要DirectX   Audio,需要的是DirectShow。所以,我们要#include   <dshow.h>,并在工程中加入strmiids.lib。   

调入MP3文件   
 
  下面把初始化DirectShow和调入MP3合起来说说吧。首先,我们要定义三个对象,其中IGraphBuilder*类型的可以认为是媒体播放设备,IMediaControl*类型的变量负责媒体的播放控制,而IMediaPosition*类型的变量负责媒体的播放位置设定。   

IGraphBuilder*   pGBuilder;   
 
  IMediaControl*   pMControl;   
 
  IMediaPosition*   pMPos;   
 
  CoInitialize(NULL);   //初始化COM   
 
  //创建各个对象   
 
  CoCreateInstance(CLSID_FilterGraph,   NULL,   
 
  CLSCTX_INPROC,   IID_IGraphBuilder,   (void**)&pGBuilder);   
 
  pGBuilder->QueryInterface(IID_IMediaControl,   (void**)&pMControl);   
 
  pGBuilder->QueryInterface(IID_IMediaPosition,   (void**)&pMPos);   

CHAR   strSoundPath[MAX_PATH];   //存储音乐所在路径   
 
  WCHAR   wstrSoundPath[MAX_PATH];   //存储UNICODE形式的路径   
 
  GetCurrentDirectory(MAX_PATH,   strSoundPath);   
 
  strcat(strSoundPath,   "\\Sounds\\");   
 
  strcat(strSoundPath,   "a.mp3");   //假设要播放的是Sounds子目录下的a.mp3   
 
  MultiByteToWideChar(CP_ACP,   0,   strSoundPath,   -1,wstrSoundPath,   MAX_PATH);   
 
  pGBuilder->RenderFile(wstrSoundPath,   NULL);   //调入文件   

播放MP3文件   
 
  播放MP3的方法十分简单:   
 
  pMPos->put_CurrentPosition(0);   //移动到文件头   
 
  pMControl->Run();   //播放   

停止播放和释放对象   
 
  最后,我们要停止播放音乐并释放各个对象:   
 
  pMControl->Stop();   //停止播放   
 
  //释放对象   
 
  SAFE_RELEASE(pMControl);   
 
  SAFE_RELEASE(pMPos);   
 
  SAFE_RELEASE(pGBuilder);   
 
  CoUninitialize();   //释放COM   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值