一.alsa-utils介紹
ALSA是kernel中的一個聲音驅動程序.它包括alsa核心和其他聲卡的驅動.
alsa-utils是alsa的一個工具包,裏面包含有聲卡測試和音頻編輯的工具.
二.alsa-utils的安裝
1.RPM包方式
Turbolinux 10.5,11版本已經包含有alsa-utils的rpm包,你可以直接安裝:
# rpm -ivh alsa-utils-xxx.rpm
2.源碼包方式
下載地址:
http://www.alsa-project.org/main/index.php/Download
源碼包安裝方法:
# tar zxvf alsa-utils-1.0.6.tar.gz # cd alsa-utils-1.0.6 # ./configure # make install
三.alsa-utils工具的使用
alsa-utils包含的工具有:
alsactl, aconnect, alsamixer, amidi, amixer, aplay, aplaymidi, arecord, arecordmidi, aseqnet, iecset, speaker-test
1.alsactl的使用
alsactl用來對alsa聲卡驅動進行一些高級的設置.系統中裝有多個聲卡,它也可以支持.
有時在音量控制面板無法調整的選項,可以使用alsactl來實現.
alsactl可以將指定聲卡的驅動程序設置信息保存到配置文件.或從配置文件中恢復指定
聲卡的驅動程序的設置信息.
alsactl格式: alsactl [options] [store|restore] <card # or id> 選項: -h, --help 打印幫助信息 -f, --file 指定使用的配置文件,默認爲/etc/asound.state. Select the configuration file to use. The default is /etc/asound.state -F, --force 與恢復命令一起使用.表示最大限度的恢復設置值. -d, --debug 調試模式,輸出更多細節信息. -v, --version 打印alsactl版本號. 文件: /etc/asound.state(或使用-f指定的文件)保存有聲卡所有混合器的設置信息.
示例:
# rm /etc/asound.state -f # alsactl store
2.aconnect的使用
aconnect是ALSA音序器的連接管理器.用來連接或斷開ALSA音序器上的端口.端口是
可以隨意定義的.
如,使用aconnect可以連接到任何由aseqview建立的設備端口.
命令格式:
aconnect [-d] [-options] sender receiver aconnect -i|-o [-options] aconnect -x 選項: 連接管理 -d, --disconnect 斷開連接. -e, --exclusive 使用獨佔模式連接端口.發送和接收端口將不能再與其他端口相連. -r, --real queue 將時間包的時間戳,轉換爲真實時間隊列的當前值. 顯示端口 -i, --input 顯示存在的輸入端口. -o, --output 顯示存在的輸出端口. -l, --list 顯示當前的連接狀態. 刪除連接 -x, --removeall 刪除所有連接.
示例:
連接端口64:0到65:0: % aconnect 64:0 65:0 這個連接是單向的,所有到發送端口64:0的數據,將被重定向到接收65:0端口.如果有另一個端口65:1, 也使用64:0作爲發送端口,則數據會同時發送到2個接收端口. 端口連接時,使用: % aconnect -d 64:0 65:0 地址也可以使用客戶端的名字來代替: % aconnect External:0 Emu8000:1 使用-i打印出輸入端口信息.-o打印出輸出端口信息. % aconnect -i client 0: ’System’ [type=kernel] 0 ’Timer ’ 1 ’Announce ’ client 64: ’External MIDI-0’ [type=kernel] 0 ’MIDI 0-0 ’ 可以使用-x選項來清除所有的連接. % aconnect -x
3.alsamixer的使用
alsamixer是一個終端界面的聲卡音量調節器.如圖:
命令格式: alsamixer [options] 選項: -h, -help 顯示幫助信息. -c <card number or idenfication> 指定需要設置的聲卡.默認爲0. -D <device identification> 選擇需要控制的調節器. -g 設置界面顏色. -s 最小化界面窗口. 快捷鍵: 進入alsamixer界面後,可以使用下面快捷鍵進行控制: 常規控制: 左右箭頭或n,p 用來選擇通道. 上下箭頭或+,- 同時調整選定通道的左右聲道的音量. B,= 設置左右聲道音量相同. M 靜音當前通道.<,>分別對左,右聲道靜音. 空格 選擇錄音源.在選定的通道上按"空格",可以標記此通道爲錄音源.此操作僅限 輸入設備.插入鍵或";",刪除鍵或"'"分別選定左右通道. L 刷新屏幕. 快捷設置 PageUp 增大5格音量. PageDown 減小5格音量. End 設置音量爲0. 分別調整左,右或整個通道的音量. Q,W,E 增大 左,右,通道 的音量. Z,X,C 減小 左,右,通道 的音量. alt-q,ESC 退出.
4.amidi的使用
amidi的作用是對ALSA的RawMIDI端口進行讀寫.
amidi是一個命令行工具,允許你以獨佔模式向MIDI設備讀/寫數據.
命令格式: amidi options 選項: -h,-V,-l,-L 用於顯示信息. -s,-r,-S,-d 用於發送/接收數據. -h, --help 打印幫助信息. -V, --version 打印版本號. -l, --list-devices 打印所有硬件MIDI端口的列表. -L, --list-rawmidis 打印所有RawMIDI定義. -p, --port=name 設置要使用的ALSA RawMIDI端口.若不指定,則使用聲卡0的端口0. -s, --send=filename 發送指定文件的內容到MIDI端口.文件中必須包含raw MIDI命令(.syx,.mid文件). -r, --receive=filename 將MIDI端口接收的數據寫入指定文件. -S, --send-hex="..." 發送十六進制字節到MIDI端口. -d, --dump 從MIDI端口接收數據,然後以十六進制形式打印出來. -t, --timeout=秒 指定超時,當端口無數據輸出達到超時時長時,將停止接收數據.
示例:
amidi -p hw:0 -s my_settings.syx 發送my_settings.syx終端MIDI命令到端口 hw:0. amidi -S ’ 發送XG復位到默認端口. amidi -p virtual -d 建立一個虛擬RawMIDI端口,然後發送所有數據到這個端口.
5.amixer的使用
amixer是命令行的ALSA聲卡驅動調節器工具.
amixer用來在命令行控制ALSA的調節器,並且支持多聲卡.
amixer不加參數時,將打印默認聲卡的設置信息.
命令格式:
amixer [-c card] [cmd] 命令: help 顯示語法幫助. info 顯示調節器設備的信息. scontrols 顯示調節器器的完整列表 . scontents 顯示包含詳細信息的調節器的完整列表. set or sset <SCONTROL> <PARAMETER> ... 設置調節器信息. get or sget <SCONTROL> 顯示調節器的信息. controls 顯示聲卡控制器的信息. contents 顯示完整的聲卡控制器信息. cset <CONTROL> <PARAMETER> ... 設置聲卡控制器信息. cget <CONTROL> 顯示聲卡控制器的信息. 選項: [-c card] 選擇指定的聲卡. [-D device] 選擇需要控制的設備名.默認是 default. -h Help 顯示幫助信息. -q 安靜模式.不輸出設置結果.
示例:
# amixer -c 1 sset Line,0 80%,40% unmute cap 設置第2塊聲卡的"line"的左聲道音量爲80%,右聲道爲40%,取消靜音,並設置 它爲聲音源. # amixer -c 2 cset numid=34 40% 設置第34個聲卡元素爲40%.
6.arecord,aplay的使用
arecord,aplay是命令行的ALSA聲卡驅動的錄音和播放工具.
arecord是命令行ALSA聲卡驅動的錄音程序.支持多種文件格式和多個聲卡.
aplay是命令行播放工具,支持多種文件格式.
命令格式:
arecord [flags] [filename] aplay [flags] [filename [filename]] ... 選項: -h, --help 幫助. --version 打印版本信息. -l, --list-devices 列出全部聲卡和數字音頻設備. -L, --list-pcms 列出全部PCM定義. -D, --device=NAME 指定PCM設備名稱. -q --quiet 安靜模式. -t, --file-type TYPE 文件類型(voc,wav,raw或au). -c, --channels=# 設置通道號. -f --format=FORMAT 設置格式.格式包括:S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM -r, --rate=#<Hz> 設置頻率. -d, --duration=# 設置持續時間,單位爲秒. -s, --sleep-min=# 設置最小休眠時間. -M, --mmap mmap流. -N, --nonblock 設置爲非塊模式. -B, --buffer-time=# 緩衝持續時長.單位爲微妙. -v, --verbose 顯示PCM結構和設置. -I, --separate-channels 設置爲每個通道一個單獨文件.
示例:
aplay -c 1 -t raw -r 22050 -f mu_law foobar 播放raw文件foobar.以22050Hz,單聲道,8位,mu_law格式. arecord -d 10 -f cd -t wav -D copy foobar.wav 以CD質量錄製foobar.wav文件10秒鐘.使用PCM的"copy".
7.aplaymidi的使用
aplaymidi用來播放標準的MIDI文件.
aplaymidi是一個命令行工具,可以在一個或多個ALSA端口上播放MIDI
文件.
命令格式:
aplaymidi -p client:port[,...] [-d delay] midifile ... 選項: -h, --help 輸出幫助信息. -V, --version 輸出版本信息. -l, --list 輸出可以使用的輸出端口列表. -p, --port=client:port,... 設置端口. -d, --delay=seconds 設置MIDI文件結束後,等待時長.
8.arecordmidi的使用
arecordmidi用於錄製標準的MIDI文件.
arecordmidi可以從一個或多個ALSA端口上,錄製一個標準MIDI文件.
命令格式:
arecordmidi -p client:port[,...] [options] midifile 選項: -h,--help 打印幫助信息. -V,--version 打印版本號. -l,--list 打印可以使用的輸入端口. -p,--port=client:port,... 設置端口. -b,--bpm=beats 設置MIDI文件的速率,默認爲120 BPM. -f,--fps=frames 設置幀率. -s,--split-channels 設置每個通道將錄製成一個單獨的MIDI文件. -d,--dump 在標準輸出上,以文本形式顯示接受到的事件信息
9.aseqnet的使用
aseqnet是ALSA調節器的網絡連接工具.
aseqnet是ALSA調節器的客戶端程序,可以從網絡上發送和接收事件數據包.
網絡上有主機A,主機B.A爲服務器端,B爲客戶端.ALSA調節器系統必須同事運行
在兩個服務器上.然後建立服務器端口:
hostA% aseqnet sequencer opened: 128:0
在HostB上執行:
hostB% aseqnet hostA sequencer opened: 132:0
現在所有發送到HostA:128:0的數據將被傳送到HostB:132:0上,反之亦然.
命令格式:
aseqnet [remotehost] 選項: -p port 指定TCP端口號或服務名. -s addr 設置指定地址用於讀操作. -d addr 設置指定地址用於寫操作. -v 詳細輸出模式.
10.iecset的使用
設置或輸出IEC958狀態位.
iecset是個小工具,通過ALSA的API,設置或輸出IEC958(或稱S/PDIF)狀態位信息.
直接運行iecset將輸出當前IEC958的狀態信息. 命令格式:
iecset [options] [cmd arg...] 選項: -D device 設置需要打開的設備名. -c card 設置需要打開的網卡名. -x 輸出AESx字節格式的狀態信息. -i 從標準輸入讀取命令信息,每行一個命令. 命令: professional <bool> 專業模式(true)或用戶模式(false). audio <bool> 音頻模式(true). rate <int> 採樣頻率,單位Hz. emphasis <int> 設置加強值.0 = none, 1 = 50/15us, 2 = CCITT. lock <bool> 速率鎖. sbits <int> 採樣位:2 = 20bit, 4 = 24bit, 6 = undefined. wordlength <int> 設置字長:0 = No, 2 = 22-18 bit, 4 = 23-19 bit, 5 = 24-20 bit, 6 = 20-16 bit. category <int> 分類:值從0到0x7f. copyright <bool> 設置是否包含版權. original <boo> 原始標記:
示例:
輸出當前IEC958信息. $ iecset Mode: consumer Data: audio Rate: 44100 Hz Copyright: permitted Emphasis: none Category: general Original: 1st generation Clock: 1000 ppm 顯示當前第1塊聲卡的IEC958狀態位. $ iecset -Dhw:0 Mode: consumer Data: non-audio Rate: 44100 Hz Copyright: permitted Emphasis: none Category: general Original: 1st generation Clock: 1000 ppm 設置當前爲用戶模式,並打開"非音頻"位. $ iecset pro off audio off Mode: consumer Data: non-audio Rate: 44100 Hz Copyright: permitted Emphasis: none Category: general Original: 1st generation Clock: 1000 ppm
11.speaker-test的使用
speaker-test是一個針對 ALSA驅動的聲音測試工具.
speaker-test可以分別對左右聲道進行單獨的測試.
命令格式:
speaker-test [-options] 選項: -c | --channels NUM 設置通道數目. -D | --device NAME 設置使用的PCM設備名. -f | --frequency FREQ 設置聲音頻率. --help 輸出幫助信息. -b | --buffer TIME 設置緩衝區時長.0爲使用最大的緩衝區大小. -p | --period TIME 設置節拍爲多少微秒. -r | --rate RATE 設置音頻率. -t | --test pink|sine|wav -t pink 表示測試時使用噪聲. -t sine 表示測試時使用音頻信號聲. -t wav 表示測試時使用WAV文件. -l | --nloops COUNT 設置測試循環的次數. -w | --wavfile 設置測試時播放的wav文件. -W | --wavdir 設置一個包含wav文件的目錄.默認爲/usr/share/sounds/alsa.
示例:
在一個音頻接口上進行立體聲測試 # speaker-test -Dplug:front -c2 在兩個音頻接口上進行4聲道測試. # speaker-test -Dplug:surround40 -c4 在立體聲接口上進行5.1聲道測試. # speaker-test -Dplug:surround51 -c6 測試低音揚聲器. # speaker-test -Dplug:surround51 -c6 -s1 -f75