alsa库移植与声音编程分析Word文档下载推荐.docx
《alsa库移植与声音编程分析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《alsa库移植与声音编程分析Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
2.tar-xvfalsa-utils-1.0.23.tar.bz2
--prefix=/opt/ALSA/alsa_utils/
--with-alsa-inc-prefix=/opt/ALSA/alsa_lib/include/
--with-alsa-prefix=/opt/ALSA/alsa_lib/lib/
--disable-alsamixer--disable-xmlto
注:
--with-alsa-inc-prefix:
指定头文件为alsa-lib编译出来的头文件路径
--with-alsa-prefix:
指定库文件为alsa-lib编译出来的库文件路径
mv:
cannotstat`t-ja.gmo'
解决方法是下载gettext:
apt-getinstallgettext
成功以后,你会在自己的alsa-utils安装路径下的bin目录下见到生成的工具
aconnect
amidi
amixer
aplay
aplaymidi
arecord
arecordmidi
aseqdump
aseqnet
iecset
speaker-test
3.alsa_lib
cpALSA/alsa_lib/lib/libasound.*./nfsdir_linux/lib/
alsa的配置文件拷贝
除了库之外alsa的配置文件也需要拷贝到目标板根文件系统中,这里需要注意的是share目录在目标板的存放位置必须和在主机的存放路径一致,比如在主机上存放在/home/david/project/S5PC100/alsa/alsa-lib,
那么我们就得把share放在目标板上的这个路径里
cp-rfshare/home/nfsdir_linux/home/ALSA/alsa_lib/
alsa_utils
将alsa-utils/bin目录下的内容拷贝到目标板根文件系统中的bin下
cpbin/*/home/nfsdir_linux/bin/
4.测试
#cat/proc/asound/devices
0:
[0]
:
control
16:
[0-0]:
digitalaudioplayback
24:
digitalaudiocapture
33:
timer
#ls-l/dev/snd/
crw-rw----system
audio
116,
331970-01-0100:
00timer定时器接口
01970-01-0100:
00controlC0控制接口
241970-01-0100:
00pcmC0D0c
PCM接口
161970-01-0100:
00pcmC0D0p
如果没有snd目录则创建
播放wav文件
1、查看声卡设备Aplay–l
2、打开设备和调节音量
amixer-c0ssetMaster,080%,40%unmutecap
amixer-c0ssetPCM,080%,40%unmutecap
设置第1块声卡的"
Master"
和“PCM”的左声道音量为80%,右声道为40%,取消静音,并设置
3、播放音乐
aplaytest.wav
PlayingWAVE'
test.wav'
Unsigned8bit,Rate16000Hz,Mono
录音
arecord-d20-c2-twav-r8000-f"
Signed16bitLittleEndian"
a.wav
以20秒的间隔(-d20),立体声(-c2),频率是8000Hz来录制Wave格式音频
alsa-utils工具的使用
:
alsa-utils包含的工具有:
alsactl,aconnect,alsamixer,amidi,amixer,aplay,aplaymidi,arecord,arecordmidi,
aseqnet,iecset,speaker-test
amixercontrols
查看可以控制的选项,可以通过numid控制
amixercontents
查看声卡内容
amixercget
numid=(amixercontrols显示的)查看具体的选项
amixercset
controls中所输出的某个参数
具体的值(比如,0,1,On,Off等)
1.alsactl
alsactl用来对alsa声卡驱动进行一些高级的设置.系统中装有多个声卡,它也可以支持.
有时在音量控制面板无法调整的选项,可以使用alsactl来实现.
alsactl可以将指定声卡的驱动程序设置信息保存到配置文件.或从配置文件中恢复指定
声卡的驱动程序的设置信息.
alsactl格式:
alsactl[options][store|restore]
选项:
-h,--help
打印帮助信息
-f,--file
指定使用的配置文件,默认为/etc/asound.state.
Selecttheconfigurationfiletouse.Thedefaultis
/etc/asound.state
-F,--force
与恢复命令一起使用.表示最大限度的恢复设置值.
-d,--debug
调试模式,输出更多细节信息.
-v,--version
打印alsactl版本号.
文件:
/etc/asound.state(或使用-f指定的文件)保存有声卡所有混合器的设置信息.
示例:
#rm/etc/asound.state-f
#alsactlstore
2.aconnect
aconnect是ALSA音序器的连接管理器.用来连接或断开ALSA音序器上的端口.端口是
可以随意定义的.
如,使用aconnect可以连接到任何由aseqview建立的设备端口.
命令格式:
aconnect[-d][-options]senderreceiver
aconnect-i|-o[-options]
aconnect-x
连接管理
-d,--disconnect
断开连接.
-e,--exclusive
使用独占模式连接端口.发送和接收端口将不能再与其他端口相连.
-r,--realqueue
将时间包的时间戳,转换为真实时间队列的当前值.
显示端口
-i,--input
显示存在的输入端口.
-o,--output
显示存在的输出端口.
-l,--list
显示当前的连接状态.
删除连接
-x,--removeall
删除所有连接.
连接端口64:
0到65:
0:
%aconnect64:
065:
这个连接是单向的,所有到发送端口64:
0的数据,将被重定向到接收65:
0端口.如果有另一个端口65:
1,
也使用64:
0作为发送端口,则数据会同时发送到2个接收端口.
端口连接时,使用:
%aconnect-d64:
地址也可以使用客户端的名字来代替:
%aconnectExternal:
0Emu8000:
1
使用-i打印出输入端口信息.-o打印出输出端口信息.
%aconnect-i
client0:
’System’[type=kernel]
0’Timer’
1’Announce’
client64:
’ExternalMIDI-0’[type=kernel]
0’MIDI0-0’
可以使用-x选项来清除所有的连接.
%aconnect-x
3.alsamixer
alsamixer是一个终端界面的声卡音量调节器.如图:
alsamixer[options]
-h,-help
显示帮助信息.
-c
指定需要设置的声卡.默认为0.
-D
选择需要控制的调节器.
-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设备读/写数据.
amidioptions
-h,-V,-l,-L用于显示信息.
-s,-r,-S,-d用于发送/接收数据.
打印帮助信息.
-V,--version
打印版本号.
-l,--list-devices
打印所有硬件MIDI端口的列表.
-L,--list-rawmidis
打印所有RawMIDI定义.
-p,--port=name
设置要使用的ALSARawMIDI端口.若不指定,则使用声卡0的端口0.
-s,--send=filename
发送指定文件的内容到MIDI端口.文件中必须包含rawMIDI命令(.syx,.mid文件).
-r,--receive=filename
将MIDI端口接收的数据写入指定文件.
-S,--send-hex="
..."
发送十六进制字节到MIDI端口.
-d,--dump
从MIDI端口接收数据,然后以十六进制形式打印出来.
-t,--timeout=秒
指定超时,当端口无数据输出达到超时时长时,将停止接收数据.
amidi-phw:
0-smy_settings.syx
发送my_settings.syx终端MIDI命令到端口hw:
0.
amidi-S’
发送XG复位到默认端口.
amidi-pvirtual-d
建立一个虚拟RawMIDI端口,然后发送所有数据到这个端口.
5.amixer
amixer是命令行的ALSA声卡驱动调节器工具.
amixer用来在命令行控制ALSA的调节器,并且支持多声卡.
amixer不加参数时,将打印默认声卡的设置信息.
amixer[-ccard][cmd]
命令:
help显示语法帮助.
info显示调节器设备的信息.
scontrols显示调节器器的完整列表.
scontents显示包含详细信息的调节器的完整列表.
setorsset...设置调节器信息.
getorsget
显示调节器的信息.
controls显示声卡控制器的信息.
contents显示完整的声卡控制器信息.
cset...设置声卡控制器信息.
cget显示声卡控制器的信息.
[-ccard]
选择指定的声卡.
[-Ddevice]
选择需要控制的设备名.默认是default.
-hHelp
-q
安静模式.不输出设置结果.
#amixer-c1ssetLine,080%,40%unmutecap
设置第2块声卡的"
line"
的左声道音量为80%,右声道为40%,取消静音,并设置
它为声音源.
#amixer-c2csetnumid=3440%
设置第34个声卡元素为40%.
#amixer-c0setHeadphone30(97%)
将第一个声卡耳机音量设置为30或者97%
#amixer-c0getHeadphone
查看第一个声卡耳机音量设置
6.arecord,aplay
arecord,aplay是命令行的ALSA声卡驱动的录音和播放工具.
arecord是命令行ALSA声卡驱动的录音程序.支持多种文件格式和多个声卡.
aplay是命令行播放工具,支持多种文件格式.
arecord[flags][filename]
aplay[flags][filename[filename]]...
帮助.
--version
打印版本信息.
列出全部声卡和数字音频设备.
-L,--list-pcms
列出全部PCM定义.
-D,--device=NAME
指定PCM设备名称.
-q--quiet
安静模式.
-t,--file-typeTYPE
文件类型(voc,wav,raw或au).
-c,--channels=#
设置通道号.
-f--format=FORMAT
设置格式.格式包括:
S8U8S16_LE;
S16_BEU16_LE
U16_BES24_LE;
S24_BEU24_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_LAWA_LAW;
IMA_ADPCM;
MPEG;
GSM
-r,--rate=#
设置频率.
-d,--duration=#
设置持续时间,单位为秒.
-s,--sleep-min=#
设置最小休眠时间.
-M,--mmap
mmap流.
-N,--nonblock
设置为非块模式.
-B,--buffer-time=#
缓冲持续时长.单位为微妙.
-v,--verbose
显示PCM结构和设置.
-I,--separate-channels
设置为每个通道一个单独文件.
aplay-c1-traw-r22050-fmu_lawfoobar
播放raw文件foobar.以22050Hz,单声道,8位,mu_law格式.
arecord-d10-fcd-twav-Dcopyfoobar.wav
以CD质量录制foobar.wav文件10秒钟.使用PCM的"
copy"
.
arecord-vv-twav-fS16_LE-c2-d10-r24000./record.wav
-vv显示录音文件的信息
-t录音文件的类型
-f文件格式
-c声道,2为双声道
-r设置波特率
-d录音时间
7.aplaymidi
aplaymidi用来播放标准的MIDI文件.
aplaymidi是一个命令行工具,可以在一个或多个ALSA端口上播放MIDI
文件.
aplaymidi-pclientport[,...][-ddelay]midifile...
输出帮助信息.
输出版本信息.
输出可以使用的输出端口列表.
-p,--port=clientport,...
设置端口.
-d,--delay=seconds
设置MIDI文件结束后,等待时长.
8.arecordmidi的使用
arecordmidi用于录制标准的MIDI文件.
arecordmidi可以从一个或多个ALSA端口上,录制一个标准MIDI文件.
arecordmidi-pclientport[,...][options]midifile
-h,--help
-V,--version
-l,--list
打印可以使用的输入端口.
-p,--port=client
ort,...
-b,--bpm=beats
设置MIDI文件的速率,默认为120BPM.
-f,--fps=frames
设置帧率.
-s,--split-channels
设置每个通道将录制成一个单独的MIDI文件.
-d,--dump
在标准输出上,以文本形式显示接受到的事件信息
9.aseqnet
aseqnet是ALSA调节器的网络连接工具.
aseqnet是ALSA调节器的客户端程序,可以从网络上发送和接收事件数据包.
网络上有主机A,主机B.A为服务器端,B为客户端.ALSA调节器系统必须同事运行
在两个服务器上.然后建立服务器端口:
hostA%aseqnet
sequenceropened:
128:
在HostB上执行:
hostB%aseqnethostA
132:
现在所有发送到HostA:
128:
0的数据将被传送到HostB:
132:
0上,反之亦然.
aseqnet[remotehost]
-pport
指定TCP端口号或服务名.
-saddr
设置指定地址用于读操作.
-daddr
设置指定地址用于写操作.
-v
详细输出模式.
10.iecset的使用
设置或输出IEC958状态位.
iecset是个小工具,通过ALSA的API,设置或输出IEC958(或称S/PDIF)状态位信息.
直接运行iecset将输出当前IEC958的状态信息.命令格式:
iecset[options][cmdarg...]
-Ddevice
设置需要打开的设备名.
-ccard
设置需要打开的网卡名.
-x
输出AESx字节格式的状态信息.
-i
从标准输入读取命令信息,每行一个命令.
professional
专业模式(true)或用户模式(false).
audio
音频模式(true).
rate
采样频率,单位Hz.
emphasis
设置加强值.0=none,1=50/15us,2=CCITT.
lock
速率锁.
sbits
采样位:
2=20bit,4=24bit,6=undefined.
wordlength
设置字长:
0=No,2=22-18bit,4=23-19bit,5=24-20
bit,6=20-16bit.
category
分类:
值从0到0x7f.
copyright
设置是否包含版权.
original
原始标记:
输出当前IEC958信息.
$iecset
Mode:
consumer
Data:
audio
Rate:
44100Hz
Copyright:
permitted
Emphasis:
none
Category:
general
Original:
1stgeneration
Clock:
1000ppm
显示当前第1块声卡的IEC958状态位.
$iecset-Dhw:
non-audio
设置当前为用户模式,并打开"
非音频"
位.
$iecsetprooffaudiooff
non-