2012-10-16 66 views
7

我想要在線/現場處理音頻,我不斷從音頻文件中讀取音頻樣本,處理這些音頻文件(例如,應用某些效果),並將處理後的樣本轉發到音頻輸出設備(如聲卡)。輸入文件具有常見的格式,如wav,mp3,甚至可能是ogg。用於讀取音頻文件的庫

是否有類似於libav/ffmpeg的音頻文件庫,它可以簡化各種音頻格式的讀取,併爲我提供原始音頻樣本的連續流?或者是針對每種格式使用單獨庫的最佳解決方案? 這些庫應該是c/C++和跨平臺兼容的(Mac,Win,Linux,ARM)。

編輯感謝您的所有答案。我評估過所有的庫,並得出結論,最好是堅持使用libav/ffmpeg,因爲大多數庫都需要ffmpeg作爲後端。

+1

我不知道ARM,但你提到你可以使用BASS音頻庫等平臺(未預見的發展)解碼。它本地支持這些格式。 – DuXeN0N

+0

謝謝。我查看了他們的網站,他們表示ARM也受到支持。但是圖書館的一些部分似乎是封閉的來源。 有沒有LGPL或類似的許可圖書館? – Hyndrix

+1

也許libsndfile(http://www.mega-nerd.com/libsndfile/)?還是SOX(http://sox.sourceforge.net/Main/HomePage)?沒有使用他們自己,但他們看起來很有前途。 –

回答

1

LibVLC可以做到這一點。 libvlc支持各種音頻(和視頻)格式。它是一個C/C++跨平臺庫。它也應該支持Arm代碼生成。

3

結賬Juce。這是一個大型圖書館,用於開發音樂軟件的VST音頻插件。有很多你不需要的東西,但我認爲你可以選擇只包含在你的版本中的音頻部分。 AudioFormatReader及其關聯的類可以進行文件讀取,並且還有用於輸出到聲卡的類。還有很多其他音頻處理工具。這是GPL授權,跨平臺,他們聲稱實驗性的Android支持。我還沒有用它做一個項目,但我正在等待靈感!

2

我會找libSDL,它有專爲做這樣的事情並處理OGG,MP3,FLAC,WAV等音頻子系統..

1

可以使用irrKlang庫。我用它來玩我的遊戲。這是非常簡單的庫使用,例如玩一些文件「somefile.mp3」你只需要編寫

engine->play2D("somefile.mp3", true); 

而且這個庫是跨平臺的,太。並且可以使用C++,C#和所有.NET語言。

這個庫的更多功能(從它自己的網站)

它具有所有從低級別的音頻庫以及 被稱爲很多有用的功能,如一個複雜的流引擎的功能, 擴展聲朗讀,單線和多線程模式,3d音頻 模擬低端硬件,一個插件系統,多滾降 模型和更多。所有這些都可以通過一個非常簡單的API訪問。

0

GAudio Library也許是你所追求的。 它操作簡單,功能強大,跨平臺,可擴展的

高迪奧的世界您好是這樣的:

gaudio_init("addons"); 

const char* filename = "..\\media\\trek12.wav"; 

gsource* source = gaudio_source_create_from_file(filename,FALSE); 
if(source == NULL) 
{ 
    printf("load file:%s error!\n",filename); 
    printf("bad source.\nerror code:%d.\n",gaudio_error_get()); 
    gaudio_deinit(); 
    return -1; 
} 

printf("play filename:%s\n",filename); 

gaudio_source_play(source,FALSE); 

printf("\nplaying, press any key to quit.\n"); 
getch(); 

gaudio_source_stop(source); 
gaudio_source_destroy(source); 

gaudio_deinit(); 
相關問題