1、使用msi库

  1. #include <mmsystem.h>
  2. #pragma comment(lib,"winmm.lib")
  3.  
  4. .......
  5.  
  6. //打开文件
  7. MCI_OPEN_PARMS mciOpen;
  8. mciOpen.lpstrDeviceType = _T("mpegvideo");
  9. mciOpen.lpstrElementName = _T("c://1.mp3");
  10. MCIERROR mciError = mciSendCommand(, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
  11. if(mciError)
  12. {
  13. TCHAR buf[]={};
  14. mciGetErrorString(mciError, buf, );
  15. printf("%s/n",buf);
  16. }
  17.  
  18. //播放(异步)
  19. UINT DeviceID = mciOpen.wDeviceID ;
  20. MCI_PLAY_PARMS mciPlay;
  21. mciError = mciSendCommand(DeviceID, MCI_PLAY, , (DWORD)&mciPlay);
  22. if(mciError)
  23. {
  24. printf("send MCI_PLAY command failed/n");
  25. }
  26.  
  27. //暂停
  28. //mciSendCommand(DeviceID, MCI_PAUSE, 0 , (DWORD)&mciPlay);
  29.  
  30. //停止
  31. mciSendCommand(DeviceID, MCI_STOP, NULL , NULL);
  32. mciSendCommand(DeviceID, MCI_SEEK, MCI_SEEK_TO_START , NULL);
  33.  
  34. //关闭
  35. //mciSendCommand(DeviceID, MCI_CLOSE, 0 , (DWORD)&mciPlay);
  36.  
  37. //获得播放进度,仅为示例代码
  38. //MCI_STATUS_PARMS mciStatusParms;
  39. //mciStatusParms.dwItem=MCI_STATUS_POSITION;
  40. //mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);//关键,取得位置
  41. //int m_dPosition=mciStatusParms.dwReturn;
  42.  
  43. //获得整个音频的时间长度,仅为示例代码
  44. //UINT DeviceID = mciOpen.wDeviceID ;
  45. //mciStatusParms.dwItem=MCI_STATUS_LENGTH;
  46. //mciSendCommand(DeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);//关键,取得长度
  47. // m_dLength=mciStatusParms.dwReturn;
  48.  
  49. //在指定位置播放,仅为示例代码
  50. //MCI_PLAY_PARMS mciPlay;
  51. //mciPlay.dwFrom=m_dPosition;
  52. //mciError = mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_FROM,(DWORD)&mciPlay);
  53.  
  54. //控制音量,仅为示例代码
  55. //MCI_DGV_SETAUDIO_PARMS mciSetAudioPara;
  56. //mciSetAudioPara.dwItem = MCI_DGV_SETAUDIO_VOLUME;
  57. //mciSetAudioPara.dwValue = atoi(m_Volume.GetBuffer(m_Volume.GetLength()));//here is the value of the Volume(0--1000)
  58. //mciSendCommand(m_wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, (DWORD)(LPVOID)&mciSetAudioPara);

2、使用vfw库

  1. #include <vfw.h>
  2. #pragma comment(lib,"vfw32.lib")
  3.  
  4. .......
  5.  
  6. //打开文件
  7. CString filename = _T("c://1.mp3");
  8. HWND hwnd = MCIWndCreate(m_hWnd,NULL,MCIWNDF_NOPLAYBAR,filename);
  9. ::ShowWindow(hwnd,SW_HIDE);
  10.  
  11. //设置音量
  12. MCIWndSetVolume(hwnd,);
  13.  
  14. //播放(异步)
  15. MCIWndPlay(hwnd);
  16.  
  17. //关闭
  18. //MCIWndClose(hwnd);

3、使用DirectShow

  1. #include <dshow.h>
  2. #pragma comment(lib,"strmiids.lib")
  3.  
  4. .......
  5.  
  6. IGraphBuilder* pGBuilder;
  7. IMediaControl* pMControl;
  8. IMediaPosition* pMPos;
  9. IMediaEvent* pMEvent;
  10.  
  11. CoInitialize(NULL); //初始化COM
  12. CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder,(void**)&pGBuilder);
  13. pGBuilder->QueryInterface(IID_IMediaControl,(void**)&pMControl);
  14. pGBuilder->QueryInterface(IID_IMediaEvent,(void**)&pMEvent);
  15. pGBuilder->QueryInterface(IID_IMediaPosition,(void**)&pMPos);
  16.  
  17. pGBuilder->RenderFile(L"C://1.mp3", NULL); //调入文件
  18.  
  19. //播放MP3文件
  20. pMPos->put_CurrentPosition(); //移动到文件头
  21. pMControl->Run(); //播放(异步)
  22.  
  23. // 停止播放和释放对象
  24. /*pMControl->Stop(); //停止播放
  25. pMControl->Release();
  26. pMControl=NULL;
  27. pMEvent->Release();
  28. pMEvent=NULL;
  29. pMPos->Release();
  30. pMPos=NULL;
  31. pGBuilder->Release();
  32. pGBuilder=NULL;
  33. CoUninitialize(); //释放COM */

VC播放mp3的方法的更多相关文章

  1. vc中播放mp3文件的方法小结

    一般播放MP3常见的有两种方法,一种是自己解码,另外一种用系统的库,比如MCI,当然如果可以用控件直接用个控件会更方便. 1.      使用mci #include <windows.h> ...

  2. VC用MCI播放mp3等音乐文件

    VC播放mp3等音乐文件,可以使用MCI.MCI ( Media Control Interface ) ,即媒体控制接口,向基于Windows操作系统的应用程序提供了高层次的控制媒体设备接口的能力. ...

  3. 读取SD卡文件夹下的MP3文件和播放MP3文件

    首先获取SD卡path路径下的所有的MP3文件,并将文件名和文件大小存入List数组(此代码定义在FileUtils类中): /** * 读取目录中的Mp3文件的名字和大小 */ public Lis ...

  4. ios开发——实用技术篇Swift篇&播放MP3

    播放MP3 // MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime ...

  5. Android开发手记(14) 使用MediaPlayer播放mp3

    1.获取MediaPlayer实例 (1)可以直接通过new或者create方式: 调用setDataSource和create的区别是,create时已经执行了MediaPlayer.prepare ...

  6. ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题

    1.ubuntu 13.10 Rhythmbox不能播放mp3的解决方法 软件中心搜索(ubuntu额外的版权受限软件)不带括号 2.中文乱码问题解决方法: 终端顺序操作 : 1.  sudo ged ...

  7. IOS使用AVAudioPlayer播放mp3歌曲文件并监听来电打断

    本实例实现了AVAudioPlayer播放mp3歌曲文件,实现了播放.暂停.继续操作,音乐音量控制.播放进度显示,同时监听来电打断事件 一.控件初始化 - (void)viewDidLoad { [s ...

  8. CEF3 HTML5 audio标签为什么不能播放mp3格式的音频文件

    CEF3 HTML5 audio标签 为什么不能播放mp3格式的音频文件   原因略.   解决方法: 找一个最新版的chrome ,我用的是24版本.路径 C:\Documents and Sett ...

  9. 播放MP3

    播放背景音乐 上文来自:http://blog.csdn.net/henulwj/article/details/8977738 using System; using System.Collecti ...

随机推荐

  1. Django import相关

    from django.shortcuts import render,redirect from django.contrib.auth import authenticate,logout,log ...

  2. java String 中替换"\"为"\\"

    表示路径的字符串  c:\work\test\afd.out, 要形成 c:\\work\\test\\afd.out   用 String str = strBsf.replaceAll(" ...

  3. Linux下新建服务

    1 首先在/etc/rc.d/init.d/下添加脚本 asr_cron #!/bin/bash # $Id: rc.redhat.asterisk -- ::43Z tilghman $ # # a ...

  4. "//./root/CIMV2" because of error 0x80041003. Events cannot be delivered through this filter until the problem is corrected.

    windows系统日志错误信息: Event filter with query "SELECT * FROM __InstanceModificationEvent WITHIN 60 W ...

  5. PhotoSphereViewer 全景图

    1网站地址:http://photo-sphere-viewer.js.org/markers.html#demo 2参数中文地址:https://www.cnblogs.com/big-tree/p ...

  6. C# Request.RawUrl与Request.Url的区别

    RawUrl——不包含域名及端口的地址 Url——包含域名,最全

  7. Vue 安装脚手架 工具 vue-cli (最新)

    假如您安装过旧版脚手架工具(vue-cli),您可以通过 npm uninstall vue-cli -g 或 yarn global remove vue-cli卸载. Vue CLI 需要Node ...

  8. python 数据类型 之 集合

    集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合 集合的三个特性: 1.确定性 (element必须可hash,不可变类型是可hash的) 2.互异性(集合中element 不能重复) ...

  9. ----转载----【前端工具】Chrome 扩展程序的开发与发布 -- 手把手教你开发扩展程序

    关于 chrome 扩展的文章,很久之前也写过一篇.清除页面广告?身为前端,自己做一款简易的chrome扩展吧. 本篇文章重在分享一些制作扩展的过程中比较重要的知识及难点. 什么是 chrome 扩展 ...

  10. PAT 1013 数素数 (20)(代码)

    1013 数素数 (20)(20 分) 令P~i~表示第i个素数.现任给两个正整数M <= N <= 10^4^,请输出P~M~到P~N~的所有素数. 输入格式: 输入在一行中给出M和N, ...