我的代码
char MusicLoc [50][200];
char Music [50][50];
int MusicBox(int IndexMusic)
{
std::string rawloc = ((std::string)"open \""+MusicLoc[IndexMusic]+Music[IndexMusic]+"\"type mpegvideo alias "+Music[IndexMusic]);`
mciSendString(rawloc.c_str(), NULL, 0, 0);
mciSendString(((std::string)"play "+Music[IndexMusic]).c_str(), NULL, 0, 0);
return 0;
}
MusicLoc包含路径,Music包含文件名,因此MusicLoc [1] + Music [1]将是C:\ etc \ etc \ etc \ _ audio.mp3,它首先工作正常,但随后它随机停止工作,我已经尝试了所有的东西而且它不起作用所以我猜测使用mciSendString是不是建议,所以有谁知道一个好的轻量级音频库?
编辑: 第一个mciSendString返回266,第二个返回275,如果有任何用途,但我真的没有找到关于它们的好文档。
GetLastError也说没有错误......
答案 0 :(得分:0)
如果没有错误,则mciSendString的返回值应为零。您的问题表明您收到错误!
要很好地解码错误,请使用mciGetErrorString
像这样(从我的代码中删除,所以你必须调整变量名等)
wchar_t cmd[250];
swprintf(cmd,249,L"open %s alias an1",fname1.c_str());
err = mciSendString(cmd, 0, 0, 0 );
if( err ) throw err;
...
catch ( unsigned int& err ) {
wprintf(L"Playing %s %s %s\n",fname1.c_str(),fname2.c_str(),fname3.c_str());
wchar_t msg[128];
mciGetErrorString( err, msg,128 );
wprintf(L"%s\n",msg);