aplay amixer arecord說明

_kerneler發表於2020-12-30

arecord聲音錄製

在這裡插入圖片描述
arecord -l列出音效卡和數字音訊裝置
在這裡插入圖片描述
-D引數用於指定音訊裝置PCM
以hwx,x開頭
根據上面l列出的裝置,如果選擇tvp5158來錄製聲音的話那麼pcm裝置就位hw0,0,如果是tlv320aic3x則pcm裝置為hw0,1,sii9135則pcm裝置為hw0,2。
音效卡號,裝置號
-r指定取樣頻率:5512/8000/11025/16000/22050/32000/44100/48000/64000/88200/96000/176400/192000
-f指定取樣格式上面列出了:cd/cdr/dat/S16_LE/S32_LE/…
arecord -D default:CARD=mcasp0 -d 100000 -f cd -t raw mysong15.raw
arecord -D default:CARD=mcasp0 -d 100000 -f dat -t raw mysong10.raw
arecord -D default:CARD=mcasp0 -d 100000 -f S16_LE -r 16000 -t raw mysong10.raw
arecord -Dhw:0,1 -r8000 -f cd /a/1.wmv
arecord -Dhw:0,0 -r8000 -f S16_LE -c 2 /a/1.wmv
arecord -Dhw:0,2 -r48000 -f S32_LE -c 2 /a/1.wmv

========================================================================

aplay聲音播放

在這裡插入圖片描述
-D引數用於指定音訊裝置PCM
以hwx,x開頭

根據上面l列出的裝置,如果選擇tlv320aic3x來播放聲音的話那麼pcm裝置就位hw0,1,如果是hdmi則pcm裝置為hw0,0。
音效卡號,裝置號
-r指定取樣頻率:5512/8000/11025/16000/22050/32000/44100/48000/64000/88200/96000/176400/192000
-f指定取樣格式上面列出了:cd/cdr/dat/S16_LE/S32_LE/…

aplay -Dhw:0,1 -r8000 -f cd /a/1.wmv
aplay -Dhw:0,1 -r48000 -f cd /a/1.wmv

arecord -Dhw:0,2 -r48000 -f S32_LE -c 2 | aplay -Dhw:0,1 -r48000//一邊採集一邊播放

amixer用法

簡述amixer及其用法
alsamixer是Linux 音訊架構ALSA中的Alsa工具的其中一個,用於配置音訊的各個引數。
alsamixer是基於文字下的圖形介面的,可以通過鍵盤的上下鍵,左右鍵等,很方便地設定需要的音量,開關某個switch(開關)等等操作。
amixer,是alsamixer的文字模式,即命令列模式,需要用amixer命令的形式去配置你的音效卡的各個選項。
對於amixer的使用,你首先需要搞懂你要設定的引數是哪些,然後才可能去了解,如何去配置對應的值,整體來說,相對alsamixer來說,是有點繁瑣,下面簡要介紹其具體用法:

1.檢視amixer支援的命令
amixer -h
在這裡插入圖片描述
2.檢視可使用的介面
再看看當前你的音訊系統(不同的音訊驅動對應不同的內容和操作介面)提供了那些供你使用的介面去操作
關於驅動裡面已經提供了多少介面可以去操作,可以用命令:
amixer contents
檢視,比如:
在這裡插入圖片描述
3.如何去設定某個引數
總結起來就是,先要用get系列命令去看懂有哪些介面,然後再去用set系列的命令,去設定對應你所要設定的值。
檢視獲取某個設定項的值用amixer cget +控制引數
根據控制引數型別設定控制引數使用amixer cset +控制引數+" "+引數

想要針對某項設定,比如想要設定上面的的主音量,master volume,即controls中顯示的:
numid=5,iface=MIXER,name=’PCM Volume’
那麼,可以先看看當前的值:

amixer cget numid=5,iface=MIXER,name=’PCM Volume’

numid=5,iface=MIXER,name=’PCM Volume’
; type=INTEGER,access=rw—R–,values=2,min=0,max=27,step=0
: values=27,27
| dBscale-min=-40.50dB,step=1.50dB,mute=0
顯示的是最大的27,假設想要設定為25,那麼就用cset去設定:

amixer cset numid=5,iface=MIXER,name=’PCM Volume’ 25

numid=5,iface=MIXER,name=’PCM Volume’
; type=INTEGER,access=rw—R–,values=2,min=0,max=27,step=0
: values=25,25
| dBscale-min=-40.50dB,step=1.50dB,mute=0

再比如,去將’Mic Supply 的switch關閉:

amixer cset numid=12,iface=MIXER,name=’Mic Supply Switch’ Off

numid=12,iface=MIXER,name=’Mic Supply Switch’
; type=ENUMERATED,access=rw——,values=1,items=2
; Item #0 ‘On’
; Item #1 ‘Off’
: values=1

總結一下用法,就是:
amixer cget controls中所輸出的某個引數
amixer cset controls中所輸出的某個引數 具體的值(比如,0,1,On,Off等)

【提示】
同上面介紹的的cget/cset系列命令:
controls show all controls for given card
contents show contents of all controls for given card
cset cID P set control contents for one control
cget cID get control contents for one control

類似的,還有另外一套sget/sset系列的命令:
scontrols show all mixer simple controls
scontents show contents of all mixer simple controls (default command)
sset sID P set contents for one mixer simple control
sget sID get contents for one mixer simple control
也是同樣做法,比如:
通過檢視當然有哪些選擇可以控制:

amixer scontrols

Simple mixer control ‘Master’,0
Simple mixer control ‘Master Mode’,0
Simple mixer control ‘Master Mux’,0
Simple mixer control ‘Master Quality’,0
。。。

同理,amixer scontents,可以檢視當前所有的值,具體就不在這列舉了。
另外,去檢視或者配置用sget,比如:

amixer sget ‘Microphone Input’,0

Simple mixer control ‘Microphone Input’,0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]

如果想要修改對應設定,用amixer sset ,具體用法是:
amixer sset sID(控制字串) P(支援的某個值)
其中sID,就是上面的Simple mixer control後面的那個字串,比如’Master Mux’,0
而對其設定就是,先看看其提供了哪些供你設定的值:

amixer sget ‘Master Mux’,0

Simple mixer control ‘Master Mux’,0
Capabilities: enum
Items: ‘Sum’ ‘DAC’ ‘Line’ ‘Mic’
Item0: ‘DAC’
然後比如要設定成Line的,就可以這樣:

amixer sset ‘Master Mux’,0 Line

Simple mixer control ‘Master Mux’,0
Capabilities: enum
Items: ‘Sum’ ‘DAC’ ‘Line’ ‘Mic’
Item0: ‘Line’

amixer設定音量:

1.設定音效卡0左聲道音量為200
amixer cset numid=6,iface=MIXER,name=‘L ADC VOLUME’ 200
2.獲取音效卡0左聲道音量值
root@dvr:~# amixer cget numid=6,iface=MIXER,name=‘L ADC VOLUME’
numid=6,iface=MIXER,name=‘L ADC VOLUME’
; type=INTEGER,access=rw------,values=1,min=0,max=255,step=0
: values=200
3.設定音效卡0右聲道音量為200
amixer cset numid=5,iface=MIXER,name=‘PCM Volume’ 200
4.獲取音效卡0右聲道音量值值
root@dvr:~# amixer cget numid=5,iface=MIXER,name=‘PCM Volume’
numid=5,iface=MIXER,name=‘R ADC VOLUME’
; type=INTEGER,access=rw------,values=1,min=0,max=255,step=0
: values=200
5.設定音效卡1右聲道音量為200
amixer -c 1 cset numid=5,iface=MIXER,name=‘PCM Volume’ 200
6.獲取音效卡1右聲道音量值
root@dvr:~# amixer -c 1 cget numid=5,iface=MIXER,name=‘PCM Volume’
numid=5,iface=MIXER,name=‘R ADC VOLUME’
; type=INTEGER,access=rw------,values=1,min=0,max=255,step=0
: values=200
7.設定音效卡1左聲道音量為200
amixer -c 1 cset numid=6,iface=MIXER,name=‘L ADC VOLUME’ 200
8.獲取音效卡1左聲道音量值
root@dvr:~# amixer -c 1 cget numid=6,iface=MIXER,name=‘L ADC VOLUME’
numid=6,iface=MIXER,name=‘L ADC VOLUME’
; type=INTEGER,access=rw------,values=1,min=0,max=255,step=0
: values=200