播放MP3音乐

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

不会很难

MAY YOU SUCCEED!

c语言playsound参数,通达信playsound函数相关推荐

  1. c语言cross函数什么意思,通达信cross函数用法,通达信 filter函数 返回什么值

    Q1:通达信 filter函数 返回什么值 结果:返回一个逻辑真值,当逻辑条件为真时,如果在N周期内已真过,将当前真值置为0,即过滤. 下面网页上有详细讲解. http://www.chcj.net/ ...

  2. python 通达信公式函数_通达信zig函数的python实现

    通达信zig函数的python实现 代码 # coding: utf-8 """ Created on Sat Jan 05 18:53:39 2019 http://w ...

  3. python调用通达信函数大全_通达信zig函数的python实现

    通达信zig函数的python实现 代码 # coding: utf-8 """ Created on Sat Jan 05 18:53:39 2019 http://w ...

  4. 什么是通达信接口函数

    什么是通达信接口函数,主要是用于通过策略接口模块提供一组在本地运行用户编写策略的能力,基于策略接口模块实现量化功能.UI组件模块,通过UI组件模块能够直接使用UI组件中的界面.

  5. 通达信财务函数与股票公式进阶篇[转]

    通达信财务函数与股票公式进阶篇[转] http://blog.sina.com.cn/s/blog_676348b301018f6v.html 通达信财务函数与股票公式进阶篇[转] FINANCE(1 ...

  6. matlab如何查看函数源代码,通达信fft函数,如何查看matlab fft函数源代码

    Q1:如何查看matlab fft函数源代码 n要取最接近数据长度的2的整数次方,命令是2^nextpow2(n),其中n是实际数据长度,因为这样的n可以使fft更快.比如,n=1021,执行n=2^ ...

  7. 大智慧、通达信winner函数python代码实现

    大智慧.通达信软件,公式中有一个winner函数,函数的作用是计算收盘获利比率.即计算按照目前收盘价,计算有多少比例持仓是盈利的.要计算获利比率,首先得计算筹码分布,就是持仓价格分布.由于无法知道真实 ...

  8. avedev matlab,通达信null函数,通达信手机条件选股器

    内容导航: Q1:为什么空表用聚合函数会有一条null记录 我觉得想稳工作上央企, Q2:AX=0 在matlab中是用null函数求解吗?null怎么用 当齐次线性方程AX=0,rank(A)=r ...

  9. matlab里exist是什么意思,通达信exist函数用法,exist()函数在matlab中怎么用?求教大神~...

    Q1:exist()函数在matlab中怎么用?求教大神~ exist name 等价于 r=exist(name) ,在程序里面这样更加实用 0 不存在则返回值 1 name 可以是变量名,如果存在 ...

  10. python 通达信公式函数,481009_易基策略二号

    481009_易基策略二号 所以我们在分时图走势变化的情况下,当个股经常性的出现尾盘的拉升的情况,特别是尾盘拉升后,下一个交易日还出现盘中拉升后股价继续下跌的情况,基本上可以断定是庄家出货造成的,而在 ...

最新文章

  1. linux监控(陆续补充)
  2. springboot和flowable modeler整合
  3. python语言入门z-python中a z
  4. TYVJ1427 小白逛公园
  5. 盘一盘推荐系统里值得一读的那些论文
  6. 编写一个算法来判断一个数 n 是不是快乐数
  7. Linux负载均衡--LVS
  8. 使用Windows迁移工具迁移2003至2012R2 二、IP迁移
  9. MarathonLb的负载研究
  10. Luogu4113 [HEOI2012]采花
  11. iOS多线程(一):GCD的基本使用
  12. 解决:Firefox添加xpi扩展组件提示“此附件组件无法安装,未通过验证”
  13. 白菜cms双端影视APP源码
  14. 【Python机器学习】梯度下降法(三) 优矿(uqer.io)
  15. 链表:递归中删除结点不发生断链
  16. 第1107期AI100_机器学习日报(2017-09-29)
  17. 浅谈Go 语言之 go-app
  18. css 全局撑开页面
  19. 地图上的两点,计算出两点之间的角度
  20. 【c#】MD5加密实现

热门文章

  1. 计算机无法启动printspooler,Win10安装打印机提示“Print Spooler无法启动”怎么办?...
  2. java swing 汽车租赁管理系统 java swing mysql实现的汽车租赁管理系统源码(1027)
  3. 上级对下级用通知合适吗_【判断题】通知只能作为下行文使用,下级对上级不能使用通知。 ( )...
  4. 多媒体计算机网络机房方案,学校多媒体教室及计算机机房方案1.doc
  5. 3d人体智能测试软件,三维人体解剖软件(3dbody)
  6. (转)简体繁体转换代码(Big5-GB | GBK简体-GBK繁体)
  7. 波兰表达式 逆波兰表达式
  8. SpringMVC工作原理图
  9. 对龙果支付系统的简单了解
  10. 卡尔曼滤波算法及其应用