【问题标题】:Play Music File in C++在 C++ 中播放音乐文件
【发布时间】:2014-06-07 00:24:10
【问题描述】:

我正在创建自己的闹钟,我想使用 c/c++ 播放自己的音乐文件。我能找到的唯一可以播放任何东西的 C++ 函数是 PlaySound(),但我似乎无法让它工作,而且我不确定我做错了什么。我已经包含了“Winmm.lib”,它可以让我播放默认声音,但现在我正在尝试播放我的音乐文件。 (以 wma 格式)。

这是我目前的代码:

#include <Windows.h>
int main(){
  PlaySound(TEXT("test.wma"), NULL, SND_FILENAME);
  return 0;
}

我还在其中添加了 SN​​D_NODEFAULT 标志,这样我就可以停止听到默认声音了。

【问题讨论】:

  • “似乎无法让它工作”是什么意思?发生什么了?它有任何声音吗?该函数是否返回错误(您未在此处检查)?也只是把它扔在那里,但很容易有other C++ functions可以播放媒体文件。
  • 可能 test.wma 不在您程序的当前目录中,因此 PlaySound() 函数找不到它。作为测试,请尝试提供文件的完整路径,例如类似 PlaySound(TEXT("C:\\Users\\Vince\\MySoundsFolder\\test.wma"), NULL, SND_FILENAME);
  • 考虑 C++ 的 Stk 声音库
  • int ret = GetLastError();在 playsound() 语句之后写一行。并检查 ret 的值。

标签: c++ audio playback


【解决方案1】:

据我所知PlaySound 仅支持.wav 文件。

如果您想玩.wma,您需要使用Audio Compression Managerthird party audio libraries 之一。

【讨论】:

    【解决方案2】:

    在 VC++ 中尝试使用简单的 c++ 代码。

    #include <windows.h>
    #include <iostream>
    #pragma comment(lib, "winmm.lib")
    
    int main(int argc, char* argv[])
    {
    std::cout<<"Sound playing... enjoy....!!!";
    PlaySound("C:\\temp\\sound_test.wav", NULL, SND_FILENAME); //SND_FILENAME or SND_LOOP
    
    return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多