tinyalsa使用

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ivychend/article/details/78837187

 

 

tinyalsa使用

  tinyalsa源码位于android源码目录下external/tinyalsa,包含了四个命令,分别是tinymix,tinycap, tinyplay,tinymeminfo和一个库libtinyalsa.so 
  使用mmm命令编译,mmm external/tinyalsa 
  相关目录及文件

  • /dev/snd/ 系统下control设备管理、pcm设备都在此目录下
  • /proc/asound/ 声卡相关信息可以在此目录下找到,命令:cat /proc/asound/cards可以查看系统下所有声卡及其ID
  • /sys/class/sound sys系统下声卡相关的文件结点在此目录下

1 tinymix

  输入tinymixu会将声卡(不指定的话,默认为0)的所有control打印出来,下面为部分打印

# tinymix                                    
Mixer name: 'wm8962-audio'
Number of controls: 105
ctl type    num name                                     value
0   BOOL    2   Input Mixer Switch                       On On
1   INT 1   MIXINL IN2L Volume                           5
2   INT 1   MIXINL PGA Volume                            0
3   INT 1   MIXINL IN3L Volume                           5
4   INT 1   MIXINR IN2R Volume                           5
5   INT 1   MIXINR PGA Volume                            0
6   INT 1   MIXINR IN3R Volume                           7
7   INT 2   Digital Capture Volume                       108 108
8   INT 2   Capture Volume                               63 63
9   BOOL    2   Capture Switch                           Off Off
10  BOOL    2   Capture ZC Switch                        On On
11  BOOL    1   Capture HPF Switch                       On
12  ENUM    1   Capture HPF Mode                         Hi-fi

  每个control都有一个ID,查看具体某个control

root@sabresd_6dq:/ # tinymix 8                                                 
Capture Volume: 63 63 (range 0->63)

  改变某个control的值

root@sabresd_6dq:/ # tinymix 8 "31 31"
root@sabresd_6dq:/ # tinymix 8                                                 
Capture Volume: 31 31 (range 0->63)

  查看、修改enum类型的control,tinymix会列出所有control的选项,前面带>号为当前选项

root@sabresd_6dq:/ # tinymix 15
Capture LHPF Mode:  >LPF    HPF
root@sabresd_6dq:/ # tinymix 15 HPF
root@sabresd_6dq:/ # tinymix 15                                                
Capture LHPF Mode:  LPF >HPF

  当前有多个声卡时,使用-D选项指定声卡,不指定的话默认为0


root@sabresd_6dq:/ # tinymix -D 1 
Mixer name: 'imx-hdmi-soc' 
Number of controls: 4 
ctl type num name value 
0 IEC958 1 IEC958 Playback Default unknown 
1 INT 1 HDMI Support Channels 2 
2 INT 3 HDMI Support Rates 32000 44100 48000 
3 INT 1 HDMI Support Formats 16 

  
 

2 tinyplay

  tinyplay只能播放wav格式的音频文件 
tinyplay test.wav

3 tinycap

  录音格式如下,保存到record.wav 
tinycap /sdcard/record.wav

4 tinymeminfo

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TinyAlsa是一个基于Linux ALSA(Advanced Linux Sound Architecture)的轻量级音频库,可用于在嵌入式系统上进行音频处理和播放。下面是一些使用TinyAlsa的基本步骤: 1. 安装TinyAlsa库 可以使用以下命令在Linux系统上安装TinyAlsa库: ``` sudo apt-get install libtinyalsa-dev ``` 2. 打开音频设备 使用TinyAlsa打开音频设备需要先创建一个TinyAlsa设备对象并打开设备,例如: ```c #include <tinyalsa/asoundlib.h> struct pcm_config config; struct pcm *pcm; config.channels = 2; config.rate = 44100; config.period_size = 1024; config.period_count = 2; config.format = PCM_FORMAT_S16_LE; pcm = pcm_open(0, 0, PCM_OUT, &config); if (!pcm || !pcm_is_ready(pcm)) { printf("Failed to open PCM device (%s)\n", pcm_get_error(pcm)); return -1; } ``` 上述代码中,`pcm_config`结构体用于设置音频设备的配置参数,`pcm_open()`函数用于打开一个PCM设备,其中第一个参数是设备的卡号,第二个参数是设备的设备号,第三个参数是设备的方向(输入或输出),第四个参数是设备的配置参数。 3. 写入或读取音频数据 打开音频设备后,可以使用`pcm_write()`函数将音频数据写入设备,例如: ```c void *data_buf; int data_size; // 将音频数据存储在data_buf中,data_size为数据大小 int ret = pcm_write(pcm, data_buf, data_size); if (ret != data_size) { printf("Failed to write PCM data (%s)\n", pcm_get_error(pcm)); } ``` 类似地,可以使用`pcm_read()`函数从音频设备中读取音频数据。 4. 关闭音频设备 使用完毕后,需要关闭音频设备并释放资源,例如: ```c pcm_close(pcm); ``` 上述代码中,`pcm_close()`函数用于关闭PCM设备。 以上是使用TinyAlsa的基本步骤,具体的实现方式要根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值