2012-02-19 43 views
6

因此在Windows中,您可以使用PlaySound函数在C++应用程序中播放MP3文件。什么是可用于Mac OS X/Linux的一些类似功能?如果你可以链接到一些示例Hello-World类型的程序来演示这一点,我也会很感激。使用本机系统调用在C++中播放声音?

+0

您应该考虑将OpenAL用于跨平台音效/音乐。 – rasmus 2012-02-19 01:35:22

回答

4

您可以只需open("/dev/dsp")并写信给它。我相信这就像你可以得到的“本地系统调用”一样。

+0

我不知道/ dev/dsp是否可用在mac上(默认情况下至少) – NothingMore 2012-02-19 11:20:39

+0

你能给我一个工作的例子吗?我不知道该怎么做。 – 2013-06-26 03:09:20

1

嗯,我不确定当前的桌面是否有一些更高级的播放音频文件的服务/库,但是如果你真的想要做一些低级别的OS音频输出,开始寻找here。也许这对您的需求来说太低级了。

3

关于音频:Linux!= Mac,所以我会分别回答。

MacOS对低级音频使用core audio框架。在此基础上,有几个更高级别的API。如果你只是想播放一个声音文件,AV Foundation Framework是最有可能的方式。 Here你找到一个例子来为iOS创建一个简单的应用程序,它可以轻松移植到MacOS。

对于Linux来说,整个情况相当微妙。存在许多不同的框架和库,它很不清楚哪些是低的,哪些是高水平的,因为其中一些正在仿效其他。基本上ALSA和OSS用于低级音频。他们都是废话。 Jack的目标是为专业音频提供一个框架,但它不是很便携(至少如果你对嵌入式设备感兴趣的话)。目前大多数Linux操作系统正在使用PulseAudio作为他们的音频服务器,它也有一个简单的API用于播放单一声音和一个非常困难的低层次API。然后是gstreamer库,它非常便于携带,并且具有中途下降API,专门用于播放视频文件和流音频,因此可能是在Linux上的方式。

我个人建议使用PortAudio,这是一个库,它提供 - 作为名称状态 - 一个音频框架,可跨多个操作系统和audio frameworks移植。 PortAudio的设计也很好,并且具有简单但灵活的API。