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

Playing sound in C++ using native system calls?

本文关键字:C++ 播放声音 系统调用 本机      更新时间:2023-10-16

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

您只需open("/dev/dsp")并对其进行写入。我相信这就是您所能得到的"本机系统调用"。

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

MacOS使用核心音频框架进行低级别音频。在此基础上,还有几个更高级别的API。如果你只想播放一个声音文件,AV基础框架很可能是最好的选择。在这里,您可以找到一个为iOS构建简单应用程序的示例,该应用程序可以轻松移植到MacOS。

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

我个人建议使用PortAudio,这是一个库,它提供了一个音频框架,可以在多个操作系统和音频框架中移植。PortAudio也设计得很好,有一个简单但灵活的API。

好吧,我不确定当前的桌面是否有一些更高级的服务/库来播放音频文件,但如果你真的想做一些低级别的操作系统音频输出,请从这里开始。也许这对你的需求来说有点太低级了。