小弟也不知道有什麼文章參考,就說一下小弟所知道的。
Linux 的音效裝置,位置就是 /dev/dsp,撥放聲音時就是將音效轉換成音效卡可讀的訊息,然後從 /dev/dsp 輸出。
下面這個檔案可以不需轉換直接輸出:
http://trek.starshine.org/downlink/sounds/au/english.au
就像這樣用(前提是沒有其他程式佔用 /dev/dsp 才能如此做)
- 代碼: 選擇全部
$ cat english.au > /dev/dsp
若您有其他程式佔用,可以先把他砍掉再撥,像是砍掉 esuond server:
- 代碼: 選擇全部
$ killall esd
就如上面所講的情況,當有一個程式佔用音效卡時,其他程式就不能撥聲音了
那如何讓多個程式能同時發聲呢? Sound Server 基本上就是要提供這樣的服務。
大家都去存取 Sound Server,然後 Sound Server 把聲音混和後,統一由 /dev/dsp 輸出,這樣就解決了這個問題啦。Windows 底下同樣也有個 Sound Server,只是使用者不必在乎他的存在。
高級一點的音效卡配合良好的驅動程式就不需要這麼作了,可以不需 Sound Server 就達成同時多個程式發聲。
像是 OSS 與 ALSA 是直接與音效硬體溝通的驅動程式,/dev/dsp 等裝置就是由 OSS與 ALSA 提供。OSS 的全名是 Open Sound System,是較古老的音效卡驅動系統;而 ALSA(Advanced Linux Sound Architecture) 就是來取代 OSS 的系統,像我要五聲道輸出,似乎只能用 ALSA,OSS 辦不到。