1. #pragma
2.
3. #define
4. //Windows头文件
5. #include<Windows.h>
6. #include<mmsystem.h>
7. #include<tchar.h>
8. #include<string>
9. #include<iostream>
10. #pragma comment(lib,"winmm.lib")
11. void playmp3(std::wstring mp3file);
12. void Testplaymp3();
13. void playmp3(std::wstring mp3file)
14. {
15. std::wstring wstr = L"open ./Baidu-Tts.mp3 alias mp3";
16. /*std::wcout << wstr << std::endl;
17. std::wcout << mp3file << std::endl;*/
18. wstr.append(mp3file);
19. /*std::wcout << wstr << std::endl;*/
20. wstr.append(L" alias mp3");
21. /*std::wcout << wstr << std::endl;*/
22. mciSendString((LPCSTR)wstr.c_str(), nullptr, 0, nullptr);
23. mciSendString(_T("play mp3"), nullptr, 0, nullptr);
24. }
25. void Testplaymp3()
26. {
27. mciSendString("open ./Baidu-Tts.mp3 alias mp3", nullptr, 0, nullptr);
28. mciSendString("play mp3", nullptr, 0, nullptr);
29. char cPosition[256];
30. long mp3Length = 0;
31. mciSendString("Status mp3 length", cPosition, 255, NULL);
32. mp3Length = strtol(cPosition, NULL, 10);
33. std::cout << "声音时长:"<< mp3Length << "ms" << std::endl;
34. }
35. //参考https://blog.csdn.net/aijia1857/article/details/101134620
36. void testmcicmd()
37. {
38. //打开MCI设备
39. MCI_OPEN_PARMS mciOP;
40. DWORD opReturn;
41. MCIDEVICEID wIDDevioce; //保存设备ID
42.
43. mciOP.lpstrDeviceType = NULL;
44. mciOP.lpstrElementName = (LPCSTR)"./Baidu-Tts.mp3"; //设置打开的文件的名称
45. opReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciOP);
46. if (opReturn == 0)
47. {
48. wIDDevioce = mciOP.wDeviceID;//播放设备Id
49.
50. //设置设备信息
51. MCI_SET_PARMS mciSet;
52. mciSet.dwTimeFormat = MCI_FORMAT_MILLISECONDS; //设置时间单位为毫秒
53. mciSendCommand(wIDDevioce, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID)&mciSet);
54.
55. //音频播放
56. MCI_PLAY_PARMS mciPP;
57. DWORD opReturn;
58. opReturn = mciSendCommand(wIDDevioce, MCI_PLAY, MCI_NOTIFY, (DWORD)&mciPP);
59.
60. MCI_STATUS_PARMS mciSP;
61. DWORD dwLength = 0;
62. mciSP.dwItem = MCI_STATUS_LENGTH;
63. DWORD dwReturn = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM,
64. (DWORD)(LPVOID)&mciSP);
65. if (dwReturn == 0)
66. dwLength = mciSP.dwReturn / 1000;
67. std::cout << "声音时长:" << dwLength << "s" << std::endl;
68.
69. MCI_STATUS_PARMS mciStatus;
70. mciStatus.dwItem = MCI_STATUS_TIME_FORMAT;
71. DWORD sta2Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
72. DWORD music_timestyle = mciStatus.dwReturn; //获得当前的时间格式
73.
74. mciStatus.dwItem = MCI_STATUS_MODE;
75. DWORD sta3Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
76. DWORD music_playstyle = mciStatus.dwReturn; //获得当前播放工作模式 播放 526 暂停525
77. }
78. else
79. {
80. wIDDevioce = NULL;
81. LPTSTR lptstr = (LPTSTR)malloc(sizeof(CHAR) * 255);
82. UINT len = 255;
83. if (mciGetErrorString(opReturn,lptstr,len) == TRUE)
84. {
85. std::cout << lptstr << std::endl;
86. }
87. free(lptstr);
88. }
89. }
90.
91. #include<conio.h>
92. #include"mciplayer.h"
93.
94. int main(int argc, char* argv[])
95. {
96. /*Testplaymp3();*/
97. testmcicmd();
98. _getch();
99. return 0;
100. }
使用MCI播放声音
转载上一篇:媒体控制接口(MCI)
下一篇:左值和右值,学习笔记.
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
flv视频流播放
前端播放视频流
ide 视频流 Events -
Unity 播放声音
Unity中支持的音频格式 格式
播放声音 ios 音乐播放 取值范围 -
Qt: 播放声音
Qt项目,需要在某些时候播放声音。
qt linux 播放声音 资源文件 文件拷贝