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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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之类的开源软件了。

发布了556 篇原创文章 · 获赞 3622 · 访问量 473万+

猜你喜欢

转载自blog.csdn.net/feixiaoxing/article/details/102767197