-
ALSA
輸入: PulseAudio, Jack, GStreamer, Xine, SDL, ESD
輸出: Hardware, OSS
首先,讓我們從了解alsa(Advanced Linux Sound Architecture, 高級linux音頻架構)開始。 alsa直接和內核通信,並提供音頻接口功能以供調用。但是,似乎alsa做了“比當好一個驅動程序”更多的事情:為系統混音,為其他程序提供音頻輸出輸出接口,為程序員提供api。他的目標好像要同Windows的ASIO或者OS X的CoreAudio一樣,作為一個底層而穩定的後台程序運行。
本來alsa是設計成為oss的繼任者的,值得慶幸的是,oss並沒有真的死亡,憑藉著alsa的兼容層重生了。所以可以簡單的把alsa理解為聲卡的驅動層。實際驅動聲卡的還是oss。聲卡需要加載前綴為snd_的內核驅動模塊,以在發聲事件時驅動聲卡發聲。這也就是你需要linux聲卡驅動的原因,這也可能是你筆記本不出聲音的原因…
幸運的是,大部分的發行版都已經自動配置好相關設備以及驅動模塊,alsa負責提供api給應用程序,應用程序可以調用api發聲。最初這個設計是給oss用的~(當時大部分驅動都是如此),但是會引發聲卡獨占問題(即只有一個程序可以發聲,其他程序只能進入隊列等待)。
alsa需要一個軟件部件監測聲卡並管理聲卡。當有兩個或多個程序需要同時發聲,alsa則進行軟混音——如果你的聲卡支持,則使用聲卡硬混音。 alsa最多可以同時管理8路的聲頻硬件,還可以同時支持mid特性。當然這個特性要取決於你的計算機硬件,所以隨著硬件的發展,這個特性不是顯得那麼重要了。
alsa和其他驅動不同之處是它的可製定性。也正是因為高度的可製定性,導致linux音頻系統架構越來越複雜。通過配置文件(/usr/share/alsa/alsa.conf)你可以管理一切——不論是混音方式,輸出設備選擇,採樣率,比特深度,還是實時音效。
alsa因其透明性、高效性和靈活性使之成為了Linux音頻系統的標準,也成為了幾乎其他所有的音頻架構和硬件通信的橋樑。
https://www.deleak.com/blog/tag/alsa/
ALSA 教學
http://linux.sheup.com/tag.php?tag=ALSA
HOWTO
http://www.linux.org.tw/CLDP/MiniHOWTO/app/Alsa-sound/Alsa-sound-1.html
ALSA 相關文章
http://blog.csdn.net/azloong/article/category/778492
留言列表