无法在 C++ 控制台应用程序中使用 mciSendString 播放 mp3
Cannot play mp3 with mciSendString in C++ console application
我正在尝试从 win32 C++ 控制台应用程序播放 mp3 文件。根据我在网上阅读的内容,mciSendString
是我正在寻找的 API,我希望以下内容能够工作,但事实并非如此。
#include <cstdio>
#include <array>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mmsystem.h>
using namespace std;
#pragma comment(lib, "Winmm.lib")
int main() {
std::array<char, MAXERRORLENGTH> errorString;
mciGetErrorStringA(
mciSendStringA(
"open \"C:\path\to\1_.mp3\" type mpegvideo alias click1",
nullptr,
0,
nullptr),
errorString.data(),
MAXERRORLENGTH);
std::printf("%s\n", errorString.data());
mciGetErrorStringA(
mciSendStringA("play click1", nullptr, 0, nullptr),
errorString.data(),
MAXERRORLENGTH);
std::printf("%s\n", errorString.data());
}
我在 Visual Studio 2019 年创建了一个新的 C++ 控制台应用程序,构建了这段代码,然后 运行 它来自控制台。它打印:
The specified command was carried out.
The specified command was carried out.
我在耳机中听到了短暂的爆破声,仅此而已。会发生什么?我是否需要先配置音频设备?设置音量?
您的程序将在您调用 mci 命令后结束。进程退出时音乐将停止播放。
只需在程序末尾添加一些内容以防止其退出。
而不是这个:
std::printf("%s\n", errorString.data());
}
这个:
std::printf("%s\n", errorString.data());
printf("press ctrl-c to exit");
while (1) {
Sleep(1000);
}
}
我正在尝试从 win32 C++ 控制台应用程序播放 mp3 文件。根据我在网上阅读的内容,mciSendString
是我正在寻找的 API,我希望以下内容能够工作,但事实并非如此。
#include <cstdio>
#include <array>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mmsystem.h>
using namespace std;
#pragma comment(lib, "Winmm.lib")
int main() {
std::array<char, MAXERRORLENGTH> errorString;
mciGetErrorStringA(
mciSendStringA(
"open \"C:\path\to\1_.mp3\" type mpegvideo alias click1",
nullptr,
0,
nullptr),
errorString.data(),
MAXERRORLENGTH);
std::printf("%s\n", errorString.data());
mciGetErrorStringA(
mciSendStringA("play click1", nullptr, 0, nullptr),
errorString.data(),
MAXERRORLENGTH);
std::printf("%s\n", errorString.data());
}
我在 Visual Studio 2019 年创建了一个新的 C++ 控制台应用程序,构建了这段代码,然后 运行 它来自控制台。它打印:
The specified command was carried out.
The specified command was carried out.
我在耳机中听到了短暂的爆破声,仅此而已。会发生什么?我是否需要先配置音频设备?设置音量?
您的程序将在您调用 mci 命令后结束。进程退出时音乐将停止播放。
只需在程序末尾添加一些内容以防止其退出。
而不是这个:
std::printf("%s\n", errorString.data());
}
这个:
std::printf("%s\n", errorString.data());
printf("press ctrl-c to exit");
while (1) {
Sleep(1000);
}
}