多媒体播放(windows音乐播放)

news/2024/10/30 11:28:58/

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

 

    在windows平台上面,开发音乐播放音乐不是一件很复杂的事情。当然,你如果需要自己进行音频的编解码工作,那还是有一些工作量的。事实上,如果我们只是用到播放音乐这个功能,比如写个小游戏、教育软件啥的,那么使用windows自带的API就可以实现这个目的。

 

1、添加多媒体库

#pragma comment(lib, "winmm.lib")

 

2、打开文件

MCI_OPEN_PARMS open_param;
open_param.lpstrElementName = _T("demo.mp3");
mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, DWORD_PTR(&open_param));

 

3、带阻塞地播放音乐,也就是播放不结束函数不返回

MCI_PLAY_PARMS play_param;
mciSendCommand(open_param.wDeviceID, MCI_PLAY, MCI_WAIT, DWORD_PTR(&play_param));

 

4、非阻塞地播放音乐,也就是命令发送结束就返回

MCI_PLAY_PARMS play_param;
mciSendCommand(open_param.wDeviceID, MCI_PLAY, MCI_NOTIFY, DWORD_PTR(&play_param));

 

5、结束音乐播放

MCI_GENERIC_PARMS close_param;
mciSendCommand(open_param.wDeviceID, MCI_CLOSE, 0, DWORD_PTR(&close_param));

 

6、所有的多媒体子命令

/* MCI command message identifiers */
#define MCI_OPEN                        0x0803
#define MCI_CLOSE                       0x0804
#define MCI_ESCAPE                      0x0805
#define MCI_PLAY                        0x0806
#define MCI_SEEK                        0x0807
#define MCI_STOP                        0x0808
#define MCI_PAUSE                       0x0809
#define MCI_INFO                        0x080A
#define MCI_GETDEVCAPS                  0x080B
#define MCI_SPIN                        0x080C
#define MCI_SET                         0x080D
#define MCI_STEP                        0x080E
#define MCI_RECORD                      0x080F
#define MCI_SYSINFO                     0x0810
#define MCI_BREAK                       0x0811
#define MCI_SAVE                        0x0813
#define MCI_STATUS                      0x0814
#define MCI_CUE                         0x0830
#define MCI_REALIZE                     0x0840
#define MCI_WINDOW                      0x0841
#define MCI_PUT                         0x0842
#define MCI_WHERE                       0x0843
#define MCI_FREEZE                      0x0844
#define MCI_UNFREEZE                    0x0845
#define MCI_LOAD                        0x0850
#define MCI_CUT                         0x0851
#define MCI_COPY                        0x0852
#define MCI_PASTE                       0x0853
#define MCI_UPDATE                      0x0854
#define MCI_RESUME                      0x0855
#define MCI_DELETE                      0x0856

 

ps:

    从前自己写代码过分关注技术本身,反而对场景和应用不是很在意。就像这音乐播放一样,如果只是使用,使用mci库函数早就足够了。如果还需要进一步分析编解码的话,可能就需要研究一下ffmpeg之类的开源软件了。


http://www.ppmy.cn/news/292845.html

相关文章

诺基亚确认将推出平板电脑 拟配置MeeGo系统

日前诺基亚公司首席执行官Stephen Elop确认了该公司正在紧锣密鼓的为首台平板电脑的发布做准备,但他没有透露该设备的细节信息。有一点可以肯定,该设备没有使用微软的Windows平台,而是一种不同的操作系统。 诺基亚的开发团队正在制定平板电脑…

诺基亚N81手机的最佳外放和内放模式均衡器设置图示

诺基亚N81的扬声器的均衡器默认设置与内设超重低音设置均不能让人有满意的效果,此外放模式属于新建手动设置模式,该设置完成后的外放效果较之前简直判若两“机”,也绝非目前市场上任何一款音乐手机能够比拟的. 官方推荐 从左到右、自下而上第…

关注诺基亚Windows Phone的7个理由

你理想中的智能手机是什么样子?它当然第一眼就得吸引你的眼球,不仅要有卓越的外观设计,还得有卓越的品质。它不需要有繁复的操作,当你想了解朋友的动态,获取最重要的信息时,最重要的信息得一目了然。它还要…

Windows Mobile 6.0媒体播放器同步指南

五一期间终于入手了期待已久的多普达智能手机P660(如果兜里银子多多,就可以购置P860了),用了几天,无论是导航系统、还是拍照功能都还不错,并且和我去年买的HP iPAQ rx1950功能上正好互补,前者有…

C语言播放音乐 Windows多媒体库MCI使用大全

在开发应用程序时,我们会遇到播放音频的需求,如何使用高级编程语言实现音频的播放是关键,在Windows下,我们可以直接调用Windows提供的Winmm(Windows Multimedia)库实现音频的播放,下面提供一种方…

自动驾驶解决方案有 adaptive autosar 与 ROS2+DDS这两种各有什么优势劣势?

adaptive autosar 是一种面向汽车行业的标准软件架构,它提供了一系列基础平台组件和面向服务的协议,如 SOME/IP、DDS 等。它可以支持不同的操作系统,如 Yocto Linux 或其他 RTOS。它从一开始就考虑了功能安全和信息安全的要求,适合…

SQL SERVER case when的使用方法

一、case when的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 第一种 格式 : 简单Case函数 : 格式说明     case 列名     when 条件值1 then 选项1     when 条件值2 then 选项2…     else 默认值 end eg:     select     case   job…

越是大型企业越需要企业内部知识库?

随着信息时代的到来,越来越多的企业开始注重知识管理。知识管理是一种通过有效地捕捉、共享和利用企业内部的知识资源,促进企业创新和发展的方法。而企业内部知识库作为知识管理的一种重要方式,对于大型企业来说尤为重要。 一、大型企业内部…