使用本机系统调用在C ++中播放声音?

时间:2012-02-19 01:15:25

标签: c++ linux macos unix audio

因此在Windows中,您可以使用PlaySound功能在C ++应用程序中播放MP3文件。在Mac OS X / Linux中可以使用哪些类似的功能?如果你能链接到一些示例的Hello-World类型程序,我也将不胜感激。

3 个答案:

答案 0 :(得分:4)

你可以open("/dev/dsp")并写信给它。我相信,这就像你可以获得的“原生系统调用”一样。

答案 1 :(得分: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。

答案 2 :(得分:1)

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