ref : https://blog.csdn.net/outstanding_yzq/article/details/8126350
一.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