2010-11-28 155 views
0

我需要在C++中播放聲音。 它應該在所有平臺上兼容。在C++中播放聲音

感謝,

goerdy

+2

哪種格式?蜂鳴聲? WAV文件? MP3? – Lagerbaer 2010-11-28 20:07:12

回答

4

嘗試的OpenAL,FMOD或SDL_mixer。選擇很廣泛。

+1

我會使用OpenAL,但SDL_Mixer也不錯。我不知道FMOD是跨平臺的嗎? OpenAL也可以播放ogg vorbis文件,這樣會派上用場。不知道它是否需要一個小的擴展庫或不。 – Bojangles 2010-11-28 20:09:20

+0

有人對我有一個代碼示例嗎? – goerdy 2010-11-28 20:26:21

+0

@JamWaffles:FMOD是跨平臺的,不怕... – 2010-11-28 20:42:00

3
std::cout << "\a\a\a\a\a\a\a\a"; 

)))

0

「兼容所有平臺」 是有點苛求的。畢竟,「所有平臺」都包括汽車中的控制器,核電站中的調節器以及網絡中的路由器。

如果您的意思是「所有桌面平臺」,您可能會多一點運氣。雖然以100%標準C++製作聲音是不可能的,但也有可用的庫。但是,我不認爲即使這些會讓你「所有平臺」。你願意滿足「最常見的平臺」嗎?

2

我的建議是去與OpenAL的(3D跨平臺音頻API)

這是相當簡單易學,爲了有編程的相似的流程和OpenGL。它是免費的,並有不同的擴展來利用聲卡。 OpenAl有一個類似於OpenGL的實用工具包(GLUT)的庫,名爲freealut。它使事情變得更簡單。

這可能是一個好地方開始: http://www.devmaster.net/articles/openal/

一些在該代碼的功能已被棄用,但閱讀文檔,你就可以進行更新。

devmaster教程還教你如何將ogg vorbis(免版稅)文件加載到內存中並播放它們。你需要下載和構建libvorbis和libogg來做到這一點,但是有很好的文檔,並且如果你使用Visual Studio,那麼已經提供瞭解決方案。

Creative Labs(最大的聲卡製造商)是該項目的主要貢獻者這一事實對它的青睞是一個很好的觀點。硬件不會被忽略。

最後一件事,請記住下載OpenAl SDK並鏈接到正確的庫和包含目錄。總是有很多人要求存儲在其中的特定文件。