国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Linux聲音系統

2019-11-09 15:35:13
字體:
來源:轉載
供稿:網友

原文地址::http://www.cnblogs.com/jiqingwu/p/linux_sound_system.html

相關文章

1、Linux下的聲音編程方法----http://blog.csdn.net/liuchao35758600/article/details/6880910

2、讓LINUX發出聲音----http://xghe110.blog.51cto.com/337884/65713/

3、Linux下揚聲器發聲的小程序----http://www.2cto.com/kf/200609/12832.html

Linux聲音系統有些混亂,它有三套音頻驅動: OSS (Open Sound System), 商業版的OSS,和ALSA (Advanced Linux Sound Architechture)。 所以底層驅動有OSS和ALSA兩套API。

一、聲卡的工作原理

音頻驅動的主要作用是驅動聲卡工作,所以也叫聲卡驅動。 聲卡的主要作用是完成數模轉換。 當電腦播放聲音時,將數字數據送到聲卡,由聲卡轉換成模擬數據給揚聲器等外放設備。 當錄音時,聲卡將從麥克風送來的模擬數據采樣成數字數據,送給計算機處理。

二、Linux音頻驅動

早期的Linux音頻驅動是OSS (Open Sound System), 但ALSA (Advanced Linux Sound Architechture)后來居上, 大有完全取代OSS的趨勢。

Linux都是通過設備文件訪問外部設備, ALSA和OSS有不同的設備文件。

+----------+--------------+--------------------+---------+|設備類型  |    OSS       |  ALSA              | 備注    |+----------+--------------+--------------------+---------+|聲音采樣  |   /dev/dsp0  | /dev/snd/pcmC0D0   |         |+----------+--------------+--------------------+---------+| 混音器   |  /dev/mixer0 | /dev/snd/mixerC0D0 | 控制音量|+----------+--------------+--------------------+---------+|高層音序器|  /dev/music0 |    N/A             | MIDI支持|+----------+--------------+--------------------+---------+|低層音序器|  /dev/midi0  |    N/A             | MIDI支持|+----------+--------------+--------------------+---------+|聲音狀態  |  /dev/sndstat|    N/A             |         |+----------+--------------+--------------------+---------+|控制文件  |   N/A        | /dev/snd/controlC0 |         |+----------+--------------+--------------------+---------+

ALSA提供了和OSS不同的API,因此如果你使用ALSA做音頻驅動, 一些通過OSS操作聲音的程序將不能正常發聲。

為了解決這一問題,ALSA提供了兼容OSS的庫, 因此,如果你使用 ALSA 驅動聲卡,也安裝了兼容OSS的庫, 那些使用OSS API的程序也能正常工作。

三、應用程序和聲卡驅動的交互方式

直接和底層聲音驅動打交道

有一些應用程序直接和最底層的聲音驅動(OSS或ALSA)打交道, 程序內部直接調用 OSS 或 ALSA 的API。

通過聲音服務器

聲音服務器介于應用程序和聲卡驅動之間。 當不同的應用調用聲音服務器的API來播放聲音時,它們把音頻數據送到服務器, 服務器將一個以上的播放請求混音后,再發送給底層的聲卡驅動(ALSA或OSS)。 由ALSA或OSS來驅動聲卡播放混音后的數據。 基于ESD開發音頻程序的好處有:(1)簡化開發。(2)即使底層驅動不支持多線程, 通過聲音服務器也能實現多個應用程序同時發聲。(3)有更好的音效。

ESD ESD 一直是 Gnome 桌面環境的聲音服務器, Gnome 應用多是通過 ESD 處理聲音的。aRts 和 ESD 對應,aRts 是 KDE 桌面環境的聲音服務器, 底層通過 ALSA 驅動聲卡。KDE 應用多通過 aRts 處理聲音。PulseAudio PulseAudio是新一代聲音服務器,能提供更好的音效, 已經有越來越多的應用通過PulseAudio處理聲音。 為了讓使用ESD的程序能繼續在PulseAudio 上工作, PulseAudio 提供了 ESD 的兼容層。 Gnome 未來將采用PulseAudio取代ESD。

通過其它庫

除了聲音服務器,為了簡化開發,還出現了其它的一些聲音庫。 這些聲音庫有的和聲音服務器打交道,有的直接和最底層的聲音驅動(OSS或ALSA)打交道。 比如游戲程序使用的SDL庫,就是直接和聲音驅動打交道。

四、總結

Linux從應用程序到聲音驅動的結構如下圖所示。

   +-------+  +------+     +-----+  +-----+ +----+   | Apps  |  | Apps |     |Apps |  |Apps | |Apps|   +---+---+  +---+--+     +--+--+  +--+--+ +-+--+       |          |           |        |      |   +---+---+  +---+------+  +-+--+  +--+--+   |   | ESD   |  |PulseAudio|  |aRts|  |Other|   |   | Gnome |  |ESD compat|  |KDE |  | SDL |   |   +---+---+  +----+-----+  +-+--+  +--+--+   |       |           |          |        |      |   +---+-----------+----------+--------+------+---+   | ALSA (Advanced Linux Sound Architechture)    |   |    OSS (Open Sound System)                   |   +----------------------------------------------+
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷州市| 临海市| 蓝山县| 浠水县| 邳州市| 新昌县| 翁牛特旗| 扶绥县| 溆浦县| 宝坻区| 延津县| 加查县| 池州市| 江安县| 永昌县| 合阳县| 阿鲁科尔沁旗| 英超| 两当县| 宣化县| 山阳县| 涡阳县| 易门县| 沁阳市| 浦北县| 北川| 林州市| 英吉沙县| 晋城| 岳阳县| 黄冈市| 普兰县| 华亭县| 泸水县| 剑阁县| 金坛市| 崇州市| 融水| 辽宁省| 襄汾县| 福州市|