【问题标题】:MP3 playing using mci send string c++使用 mci 播放 MP3 发送字符串 c++
【发布时间】:2013-03-07 14:23:43
【问题描述】:

我正在尝试在我正在做的一个项目中播放一些 mp3 文件作为我的背景音乐。我尝试使用 mcisendstring 播放它,但它无法正常工作:(

这些是我做过的:

CMP3_MCI myMp3;
std::string address= "C:\\Users\\music embed testing\\test.mp3";
myMp3.Load(address);
myMp3.Play();

//加载函数

void Load(string szFileName)
{
    m_szFileName = szFileName;
    Load2();
}

//load2函数

void Load2()
{
      std::string szCommand = "open \"" + GetFileName() + "\" type mpegvideo alias " + GetFileName();       
       mciSendString(szCommand.c_str(), NULL, 0, 0);
}

//播放函数

void Play()
{
    std::string szCommand = "play " + GetFileName() + " from 0";
    mciSendString(szCommand.c_str(), NULL, 0, 0);
}

//getFileName 基本上返回存储为私有属性的 m_szFileName

【问题讨论】:

  • 你的别名不是不止一个字吗?那样有用吗?无论如何,我在这里并没有真正看到别名的使用。
  • 嗨,我是使用 mciSendString 的新手,所以基本上我试图复制其中一个函数。我不确定他们在做什么……别名的用途是什么,我们如何省略它?例如:codeproject.com/Articles/17279/…
  • 我会说只使用"open \"" + GetFileName() + "\" type mpegvideo,然后使用"\" + GetFileName() + "\" 作为文件。
  • 不起作用:(知道如何检查命令 mcisendstring 是否已成功加载/播放音乐文件?
  • 其中一两个参数用于错误检查。文档对此有详细说明。

标签: c++ visual-c++ clr mci


【解决方案1】:

经过多次尝试和错误,我终于找到了一种让它发挥作用的方法。对于那些和我面临同样问题的人来说,这里是:

//if you are using unicode
LPCWSTR a = L"open cannon.mp3 type mpegvideo";
int error = 99;
error = mciSendString(a, NULL,0,0);
int error2;
LPCWSTR b = L"play cannon.mp3";
error2 = mciSendString(b, NULL, 0, 0);

//cannon.mp3 is stored in my resource file
//error is just for debugging

//if you are using multibyte

LPCSTR a = "open cannon.mp3 type mpegvideo";
mciSendString(a, NULL, 0,0);
LPCSTR b = "play cannon.mp3 repeat";
int error2 = mciSendString(b, NULL, 0, 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多