arm linux利用alsa驱动并使用usb音频设备
<p><span><strong>一.背景:</strong></span></p>
<p>
arm linux的内核版本是3.13.0</p>
<p>
<span><strong>二.准备工作</strong></span></p>
<p>
添加alsa驱动到内核中,也就是在编译内核的时候加入以下选项:</p>
<p>
<img title="arm linux利用alsa驱动并使用usb音频设备" alt="arm linux利用alsa驱动并使用usb音频设备" src="https://zhuji.jb51.net/uploads/img/202305/da6be66bd1219a2e6acc8ed70a72d722.jpg"></p>
<p>
接下来就重新编译内核即可</p>
<p>
<span><strong>三.交叉编译alsa-lib和alsa-utils (alsa-utils是一系列的音频设备控制工具,而alsa-lib是alsa-utils依赖的库,所以先将alsa-lib编译好)</strong></span></p>
<p>
3.1交叉编译alsa-lib</p>
<p>
3.2交叉编译alsa-utils</p>
<p>
四.将三编译好的库及工具都拷贝至arm开发板(笔者通常直接将编译好的都压缩好之后再复制到开发板进行解压,以避免直接复制造成软链接无法复制的情况)</p>
<p>
<span><strong>五.使用alsa-utils中的工具进行各类操作</strong></span></p>
<p>
5.1录音:</p>
<p>
arecord -d "plughw:0,0" demo.wmv</p>
<p>
5.2播放:</p>
<p>
aplay -d "plughw:0,0" demo.wmv</p>
<p>
5.3获取控制信息:</p>
<p>
amixer controls</p>
<p>
输出信息如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_706992">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">numid=3,iface=mixer,name=</code><code class="bash string">'master mode switch'</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">numid=29,iface=mixer,name=</code><code class="bash string">'master mux'</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">numid=4,iface=mixer,name=</code><code class="bash string">'master quality switch'</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">numid=2,iface=mixer,name=</code><code class="bash string">'master switch'</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">numid=1,iface=mixer,name=</code><code class="bash string">'master volume'</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">numid=7,iface=mixer,name=</code><code class="bash string">'pcm mode switch'</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">numid=6,iface=mixer,name=</code><code class="bash string">'pcm switch'</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">numid=5,iface=mixer,name=</code><code class="bash string">'pcm volume'</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">numid=9,iface=mixer,name=</code><code class="bash string">'mic switch'</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash plain">numid=8,iface=mixer,name=</code><code class="bash string">'mic volume'</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
5.4 获取录音时的音量大小</p>
<p>
从5.3可以获取到”<code>numid=8,iface=mixer,name='mic volume</code>'“这条信息,从mic volume可以得知是mic的音量</p>
<p>
<code>amixer cget numid=8,iface=mixer,name='mic volume'</code></p>
<p>
5.4设置录音时的音量大小</p>
<p>
<code>amixer cset numid=8,iface=mixer,name='mic volume' 255 </code></p>
<p>
<span><strong>六:注意事项:</strong></span></p>
<p>
如果将编译好的alsa-utils中的工具复制到fat32格式的存储设备的时候,注意fat32是不支持软链接的,此时需要直接复制一个aplay并将名称改为arecord:</p>
<p>
<code>cp aplay arecord</code></p>
<p>
<span><strong>总结</strong></span></p>
<p>
以上所述是小编给大家介绍的arm linux利用alsa驱动并使用usb音频设备 ,希望对大家有所帮助!</p>
<p>
原文链接:http://www.cnblogs.com/dakewei/archive/2017/10/13/7660058.html</p>
頁:
[1]