2012-02-19 96 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。