使用MCI播放声音
- #pragma
-
- #define
- //Windows头文件
- #include<Windows.h>
- #include<mmsystem.h>
- #include<tchar.h>
- #include<string>
- #include<iostream>
-
- #pragma comment(lib,"winmm.lib")
-
-
- void playmp3(std::wstring mp3file);
-
-
- void Testplaymp3();
-
-
-
- void playmp3(std::wstring mp3file)
- {
- std::wstring wstr = L"open ./Baidu-Tts.mp3 alias mp3";
- /*std::wcout << wstr << std::endl;
- std::wcout << mp3file << std::endl;*/
- wstr.append(mp3file);
- /*std::wcout << wstr << std::endl;*/
- wstr.append(L" alias mp3");
- /*std::wcout << wstr << std::endl;*/
- mciSendString((LPCSTR)wstr.c_str(), nullptr, 0, nullptr);
- mciSendString(_T("play mp3"), nullptr, 0, nullptr);
- }
-
-
- void Testplaymp3()
- {
- mciSendString("open ./Baidu-Tts.mp3 alias mp3", nullptr, 0, nullptr);
- mciSendString("play mp3", nullptr, 0, nullptr);
- char cPosition[256];
- long mp3Length = 0;
- mciSendString("Status mp3 length", cPosition, 255, NULL);
- mp3Length = strtol(cPosition, NULL, 10);
- std::cout << "声音时长:"<< mp3Length << "ms" << std::endl;
- }
-
- //参考https://blog.csdn.net/aijia1857/article/details/101134620
- void testmcicmd()
- {
- //打开MCI设备
- MCI_OPEN_PARMS mciOP;
- DWORD opReturn;
- MCIDEVICEID wIDDevioce; //保存设备ID
-
- mciOP.lpstrDeviceType = NULL;
- mciOP.lpstrElementName = (LPCSTR)"./Baidu-Tts.mp3"; //设置打开的文件的名称
- opReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciOP);
- if (opReturn == 0)
- {
- wIDDevioce = mciOP.wDeviceID;//播放设备Id
-
-
- //设置设备信息
- MCI_SET_PARMS mciSet;
- mciSet.dwTimeFormat = MCI_FORMAT_MILLISECONDS; //设置时间单位为毫秒
- mciSendCommand(wIDDevioce, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID)&mciSet);
-
- //音频播放
- MCI_PLAY_PARMS mciPP;
- DWORD opReturn;
- opReturn = mciSendCommand(wIDDevioce, MCI_PLAY, MCI_NOTIFY, (DWORD)&mciPP);
-
- MCI_STATUS_PARMS mciSP;
- DWORD dwLength = 0;
- mciSP.dwItem = MCI_STATUS_LENGTH;
- DWORD dwReturn = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM,
- (DWORD)(LPVOID)&mciSP);
- if (dwReturn == 0)
- dwLength = mciSP.dwReturn / 1000;
- std::cout << "声音时长:" << dwLength << "s" << std::endl;
-
- MCI_STATUS_PARMS mciStatus;
- mciStatus.dwItem = MCI_STATUS_TIME_FORMAT;
- DWORD sta2Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
- DWORD music_timestyle = mciStatus.dwReturn; //获得当前的时间格式
-
- mciStatus.dwItem = MCI_STATUS_MODE;
- DWORD sta3Return = mciSendCommand(wIDDevioce, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciStatus);
- DWORD music_playstyle = mciStatus.dwReturn; //获得当前播放工作模式 播放 526 暂停525
- }
- else
- {
- wIDDevioce = NULL;
- LPTSTR lptstr = (LPTSTR)malloc(sizeof(CHAR) * 255);
- UINT len = 255;
- if (mciGetErrorString(opReturn,lptstr,len) == TRUE)
- {
- std::cout << lptstr << std::endl;
- }
- free(lptstr);
- }
- }
-
-
- #include<conio.h>
- #include"mciplayer.h"
-
- int main(int argc, char* argv[])
- {
- /*Testplaymp3();*/
- testmcicmd();
- _getch();
- return 0;
- }
-
分享: