作者qazwsxee (灰雁)
看板LinuxDev
标题[问题] ARM平台的ALSA问题
时间Mon Jun 6 19:00:55 2011
大家好
我在arm平台上想测试录音和放音
(板子预设没有内建麦克风,需要外接麦克风)
我的音效介面:
[root@WinFast310 /root]#cat /proc/asound/cards
0 [zylonite ]: WM9713 - zylonite
zylonite (WM9713)
声音装置:
[root@WinFast310 /root]#cat /proc/asound/devices
0: [ 0] : control
16: [ 0- 0]: digital audio playback //应该是内建喇叭
17: [ 0- 1]: digital audio playback //外接孔所连的喇叭
24: [ 0- 0]: digital audio capture //内建的麦克风路径 不过这台没有内建麦克风
25: [ 0- 1]: digital audio capture //这个应该就是我的外接麦克风
33: : timer
PCM:
[root@WinFast310 /root]#cat /proc/asound/pcm
00-01: PCM Voice WM9713 Voice-PCM-1 : : playback 1 : capture 1
00-00: AC97 HiFi AC97 HiFi-AC97-0 : : playback 1 : capture 1
//第一个
用arecord 指令录音
[root@WinFast310 /root]#arecord -vv -fdat foo.wav
Recording WAVE 'foo.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Plug PCM: Hardware PCM card 0 'zylonite' device 0 subdevice 0
Its setup is:
stream : CAPTURE
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24480
period_size : 2040
period_time : 42500
tick_time : 10000
tstamp_mode : NONE
period_step : 1
sleep_min : 0
avail_min : 2040
xfer_align : 2040
start_threshold : 1
stop_threshold : 24480
silence_threshold: 0
silence_size : 0
boundary : 1604321280
Max peak (4080 samples): 23932 (0x5d7c) ############### 73%
Max peak (4080 samples): 00065 (0x0041) # 0%
Max peak (4080 samples): 00033 (0x0021) # 0%
Max peak (4080 samples): 00034 (0x0022) # 0%
Max peak (4080 samples): 00030 (0x001e) # 0%
Max peak (4080 samples): 00029 (0x001d) # 0%
Max peak (4080 samples): 00032 (0x0020) # 0%
..
.
//(後面都是0%,所以没有录)
我的麦克风应该是 Hardware PCM card 0 'zylonite' device 1 subdevice 0
可是我不知怎麽改...用-D hw:0,1或是-D plughw:0,1都怪怪的
状况1
[root@WinFast310 /root]#arecord -D hw:0,1 -vv -fdat foo.wav
Recording WAVE 'foo.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
arecord: set_params:864: Channels count non available
状况2
[root@WinFast310 /root]#arecord -Dplughw:0,1 -vv -fdat foo.wav
Recording WAVE 'foo.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Plug PCM: Route conversion PCM (sformat=S16_LE)
Transformation table:
0 <- 0
1 <- 0
Its setup is:
stream : CAPTURE
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24480
period_size : 4080
period_time : 85000
tick_time : 10000
tstamp_mode : NONE
period_step : 1
sleep_min : 0
avail_min : 4080
xfer_align : 4080
start_threshold : 1
stop_threshold : 24480
silence_threshold: 0
silence_size : 0
boundary : 1604321280
Slave: Hardware PCM card 0 'zylonite' device 1 subdevice 0
Its setup is:
stream : CAPTURE
access : MMAP_INTERLEAVED
format : S16_LE
subformat : STD
channels : 1
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24480
period_size : 4080
period_time : 85000
tick_time : 10000
tstamp_mode : NONE
period_step : 1
sleep_min : 0
avail_min : 4080
xfer_align : 4080
start_threshold : 1
stop_threshold : 24480
silence_threshold: 0
silence_size : 0
boundary : 1604321280
//到这边就停住了,没有在录音,我只好Ctrl+C离开刚刚的指令
内建喇叭放音状况:
[root@WinFast310 /root]#aplay -Dplughw:0,0 mic-test.wav
可以正常从内建喇叭放音
外接喇叭放音状况:
[root@WinFast310 /root]#aplay -Dplughw:0,1 mic-test.wav
Playing WAVE 'mic-test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
aplay: set_params:912: Unable to install hw params:
ACCESS: RW_INTERLEAVED
FORMAT: U8
SUBFORMAT: STD
SAMPLE_BITS: 8
FRAME_BITS: 8
CHANNELS: 1
RATE: 8000
PERIOD_TIME: 124000
PERIOD_SIZE: 992
PERIOD_BYTES: 992
PERIODS: 4
BUFFER_TIME: 496000
BUFFER_SIZE: 3968
BUFFER_BYTES: 3968
TICK_TIME: 10000
[root@WinFast310 /root]#
//没有放音
有人懂ALSA吗? 我该去调整什麽参数?
--
~剥好了,小心烫喔~ ◢◤ ◢
︴◤ ▆ ▆喔喔~ ◢
ˋ◢██◣ ◢██◣◢ 哇~ ◢◤ ◣◢██◣◥█ ρ◤ ██◢◤
█◥◥◥ ◤◤◤ █ ˊ你好体贴喔~ ◢◤ █ ◥◥◥ ∴ ◣ ██◢◤
◤ ● ●⊿ ●●▄ ◥ ◢◤唉呀! ◤ ● <ζ█◥◣ ◢◤
◥██ ◤◣ ◥▼"█◤◣ ◢◤好烫~ˋ ◢◥█"▅/▊█◣ ◢◤
◢◣██◤ ◢▏█▉◣ ◢◤ ◢██╲ █︴◤
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.127.208.147
1F:推 farzero:用其他arm板子遇过"类似"问题~原因可能为os没porting好 04/26 14:44
2F:→ farzero:ALSA初始化参数没设定好、ALSA driver有问题等等... 04/26 14:46
3F:→ farzero:後来是重编kernel+设定好ALSA(amixer)参数解决~希望有帮助 04/26 14:47