【问题标题】:Playing mp3 files with mciSendString (MCIERR_CANNOT_LOAD_DRIVER)使用 mciSendString (MCIERR_CANNOT_LOAD_DRIVER) 播放 mp3 文件
【发布时间】:2012-10-26 08:52:27
【问题描述】:

我正在尝试编写一些可以播放 .mp3 文件的代码。我以为我可以使用 mciSendString 调用,但我遇到了一个奇怪的错误。

所以,当我有这个代码时:

int rc=mciSendString(L"open songname.mp3 alias song1", NULL, 0, 0); 

rc返回数字266,GetErrorString返回的错误字符串为:

“加载指定设备驱动程序时出现未知问题。”

错误 266 是 MCIERR_CANNOT_LOAD_DRIVER

我也试过了:

int rc=mciSendString(L"open songname.mp3 type mpegvideo alias song1", NULL, 0, 0); 

并收到同样的错误。

我以为可能是 mp3 文件,但我尝试了几个不同的文件并不断收到相同的错误。

我的代码是 C++ 并在 Windows 7 上运行。我的代码是否缺少某些内容?

【问题讨论】:

  • 那么,您是否安装了 MCI 可以使用的 MP3 编解码器?
  • @LightnessRacesinOrbit 我假设 Windows 预装了它。 Windows Media Player 可以播放我尝试播放的 mp3 文件。这是一种有效的检查方式,还是我应该做其他事情来检查它是否已安装。
  • Windows Media 文件不使用 MCI 播放 IIRC。 假设任何事情——尤其是关于不工作的事情——似乎是一个奇怪的选择。
  • 尝试给出完整的绝对路径。
  • @LightnessRacesinOrbit 我尝试了完整的绝对路径,但这似乎没有帮助。但是,我用 wav 文件测试了相同的调用,并且它有效。看来您对未安装 mp3 编解码器是正确的。谢谢。你知道我可以安装的 mci mp3 编解码器吗?

标签: c++ audio mp3 mcisendstring


【解决方案1】:

尝试用一对额外的引号将songname.mp3 括起来(确保用反斜杠转义它们)。

【讨论】:

  • 好主意,但是当我用引号更改调用时,我仍然得到相同的 266 错误。遗憾的是没有解决问题。
【解决方案2】:

看起来我没有用于 MCI 的 mp3 编解码器。 (实际上由@LightnessRacesinOrbit 在 cmets 中回答了这个问题。)

【讨论】:

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