用 C++ 播放声音?

Posted

技术标签:

【中文标题】用 C++ 播放声音?【英文标题】:Playing sounds with C++? 【发布时间】:2009-04-25 23:39:15 【问题描述】:

如何在我的程序中有一个按钮,当单击该按钮时我希望它在不打开媒体播放器的情况下播放 .wma 文件?

【问题讨论】:

【参考方案1】:

C++ 标准不包含此功能。这意味着这取决于您的系统提供的功能。

对于 Windows,您可以尝试类似PlaySound。

但是,最好的办法是使用预先存在的库,例如:

OpenAL BASS FMOD SDL 的:Sound。

搜索C++ Sound Library 会带来很多信息。

另外,看看这三个其他SO topics:

What Is The Best C++ Sound API For Windows? How to play MP3 files in C? Learning to work with audio in C++

【讨论】:

Playsound 不播放 .wma 文件,只播放 .wav。【参考方案2】:

虽然上面的答案提到了它(以及其他所有内容,它没有给出任何建议......),FMOD 是 C++ 声音之王(最常用)并且效果很好,所以我特别推荐 FMOD .

【讨论】:

【参考方案3】:

Gstreamer 是一个免费的跨平台多媒体框架,用 C 语言编写(使用 GObject),允许对包括 wma 在内的多种媒体进行编码/解码。非常易于使用且有据可查。

【讨论】:

【参考方案4】:

KDE 的Phonon 是一个跨平台(!)C++ 多媒体库。它支持原生声音系统作为后端。没见过的也值得一看,一个简单的视频播放器只需要 83 行代码就可以写出来。

【讨论】:

【参考方案5】:

对于 Windows,老实说,您最好的选择是 DirectShow。 RenderFile API 让您只需几行代码即可播放大多数音频文件类型。

DirectShow 的最佳之处在于它是 Windows 平台的一部分,因此您无需捆绑外部组件。

【讨论】:

以上是关于用 C++ 播放声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中只用一个扬声器播放声音?

在做其他事情的同时在 C++ 中播放声音

如何在 C++ 中播放声音 [关闭]

播放纯声音(一个频率)并识别频率 C++

【c++】怎样才能使程序播放文件中的声音?

如何在 Mac OS X 上使用 C++ 播放声音?