本节了解一下rkmedia中ai/ao模块的使用。

AI/AO模块通过对Linux ALSA音频接口的封装,实现音频输入输出功能。

AI初始化:

  AI_CHN_ATTR_S ai_attr;ai_attr.pcAudioNode = "default";ai_attr.enSampleFormat = enSampleFmt;ai_attr.u32NbSamples = RK_SAMPLE_FMT_S16;ai_attr.u32SampleRate = 1024;ai_attr.u32Channels = 2;ai_attr.enAiLayout = AI_LAYOUT_NORMAL;ret = RK_MPI_AI_SetChnAttr(0, &ai_attr);ret |= RK_MPI_AI_EnableChn(0);if (ret) {printf("Enable AI[0] failed! ret=%d\n", ret);return -1;}

AO初始化:

  AO_CHN_ATTR_S ao_attr;ao_attr.pcAudioNode = "default";ao_attr.enSampleFormat = RK_SAMPLE_FMT_S16;ao_attr.u32NbSamples = 1024;ao_attr.u32SampleRate = 16000;ao_attr.u32Channels = 2;ret = RK_MPI_AO_SetChnAttr(0, &ao_attr);ret |= RK_MPI_AO_EnableChn(0);if (ret) {printf("ERROR: create ao[0] failed! ret=%d\n", ret);return -1;}

音频节点默认是"default",实际就是card 0 ,device 0  。如果连接了其他声卡,节点需要更改。

可能是card 1,device 0 那就让他把节点设置成 hw:1,0

音频调试工具以及常用命令

录音(arecord)

1、列出声卡和数字音频设备:arecord -l

2、录音:arecord -Dhw:0,0 -c 2 -r 16000 -f S16_LE /temp/test.wav

arecord -Dhw:0,0 -d 10 -r 16000 -c 2 -f S16_LE -t wav test.wav

arecord -Dhw:0,0 -c 1 -r 8000 -f S16_LE /tmp/test.wav

播放(aplay)

1、播放:aplay -t raw -c 1 -f S16_LE -r 8000 test2.pcm

 接口配置(amixer):

amixer:
Usage: amixer <options> [command]
几个重要命令介绍:
scontrols :  显示所有的简单控件
scontents:  显示所有的简单控件的描述
sset : 控制简单控件
sget:显示简单控件的内容
controls: 显示所有的控件
cset:控制控件
cget:显示控件

如果板子录音没有声音,可能是mixer 没有设置通路。
1、amixer contents
2、amixer cset numid=2,iface=MIXER,name='Capture MIC Path' 'Main Mic'
3、amixer cget numid=2,iface=MIXER,name='Capture MIC Path'   设置完后查看下是否设置成功

如果音响没有声音
amixer -c 0 contents
amixer -c 0 cset numid=1 2

以上两种设置语法格式,都可以设置。根据自己板子的信息来配置。


[root@RV1126_RV1109:/]# amixer contents
numid=3,iface=MIXER,name='Master Playback Volume'; type=INTEGER,access=rw---RW-,values=2,min=0,max=255,step=0: values=255,255| dBscale-min=-20.00dB,step=0.03dB,mute=0
numid=2,iface=MIXER,name='Capture MIC Path'; type=ENUMERATED,access=rw--l---,values=1,items=4; Item #0 'MIC OFF'; Item #1 'Main Mic'; Item #2 'Hands Free Mic'; Item #3 'BT Sco Mic': values=1
numid=1,iface=MIXER,name='Playback Path'; type=ENUMERATED,access=rw------,values=1,items=11; Item #0 'OFF'; Item #1 'RCV'; Item #2 'SPK'; Item #3 'HP'; Item #4 'HP_NO_MIC'; Item #5 'BT'; Item #6 'SPK_HP'; Item #7 'RING_SPK'; Item #8 'RING_HP'; Item #9 'RING_HP_NO_MIC'; Item #10 'RING_SPK_HP': values=0
numid=4,iface=MIXER,name='Digital Capture Volume'; type=INTEGER,access=rw---RW-,values=2,min=0,max=100,step=0: values=100,100| dBscale-min=-30.00dB,step=0.30dB,mute=0

注意:在使用rkmedia 的音频输入有问题时,首先要确保使用arecord和aplay命令可以获取、播放声音。如果这个都无法保证,需要确认音频节点或者驱动、硬件等是否正确。

多路音频输入输出

具体可以参考rkmedia中example/multi_audio_test文件夹,需要配置asound.conf分离音频

如有其他问题,可以在评论区一起探讨。

文章汇总:RKMEDIA使用简介_未_定的博客-CSDN博客

RKMEDIA--AI/AO的使用相关推荐

  1. 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 如何读写数字量模拟量输入输出(DI,DO,AI,AO)

    常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块) 常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL2809( ...

  2. 控制系统中的AI、AO、DI、DO是什么意思——控制系统基础知识

    前言   控制系统中AI.AO.DI.DO是集散控制系统中模块上常见的一些基本标注,好处就是便于分清什么类型量的设备,方便前期的产品选型及后期的维修与保养.   同时将现场模拟量仪表和开关量设备等进行 ...

  3. RK3568人工智能物联网,专为AI应用而生

    我司选用瑞芯微RK3568高性能低功耗处理器,定位中高端通用型SoC,采用22nm制程工艺,集成4核ARM A55处理器和高性能Mali G52 2EE图形处理器,研发RK3568全接口板.支持4K及 ...

  4. lstm数学推导_手推公式:LSTM单元梯度的详细的数学推导

    长短期记忆是复杂和先进的神经网络结构的重要组成部分.本文的主要思想是解释其背后的数学原理,所以阅读本文之前,建议首先对LSTM有一些了解. 介绍 上面是单个LSTM单元的图表.我知道它看起来可怕,但我 ...

  5. iNeuOS工业互联网,增加一批PLC、核工业、数字模块、传感器等设备驱动

    增加流量计.AI/AO/DI/DO模块.质谱.色谱.加热炉及其他行业专用设备等,不同的通讯协议和通讯机制整体集成到iNeuOS系统中. 数据采集,涉及到领域的专业设备.通用设备和PLC,有国内传感器和 ...

  6. LeetCode 1641. 统计字典序元音字符串的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请返回长度为 n .仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量. 字符串 s 按 字典序排列 需要满足 ...

  7. 嵌入式davinci电路元素基础和PWM模块

    1,DAC_OUT和DAC_OUTB是AD9912输出的差分信号. 2,电容器储存电荷的能力,常用的单位是F.uF.nF.pFUF大了好还是UF小了好,要根据电路自身需要而设计, 要看电路滤波是在高频 ...

  8. python字典统计排序 统计各省份大学数量_1641统计字典排序元音字符串的数量(递归,递归),数目,递推...

    1. 问题描述: 给你一个整数 n,请返回长度为 n .仅由元音 (a, e, i, o, u) 组成且按 字典序排列的字符串数量.字符串 s 按字典序排列需要满足:对于所有有效的 i,s[i] 在字 ...

  9. 传统工厂如何利用物联网模块实现智能化生产?

    工业的发展从 1.0 到如今的工业 4.0,世界工业经历过机械制造时代.电气自动化时代.电子信息化时代.实体物理世界和虚拟网络时代融合四个阶段.作为制造业大国的中国在工业改革的道路上,很多中小型工厂生 ...

最新文章

  1. tensorboard merge报错_什么是TensorBoard?
  2. css transition兼容性,CSS3 Transition详解和使用
  3. 如何保持空域与频域滤波结果的一致性
  4. java学习(49):方法重载
  5. Java笔记04-核心类库
  6. Spring Boot 2.3.3 稳定版发布!修复了这18个Bug!!
  7. set的用法及短语_专升本英语易考短语搭配+常考句型
  8. SQL Server安全机制–如何控制用户能够在报告中查看哪些数据
  9. 解决bootstrap dropdown 下拉菜单有时候不能显示的问题
  10. linux 虚拟ip 漂移,keepalived 虚拟ip切换
  11. AD15如何在PCB界面锁定选中元件
  12. 【Java】代码加密
  13. Mac 修改移动硬盘图标,U盘图标
  14. 计算机想ping一下网络,Ping命令以检测Windows7下的计算机网络速度
  15. Android 通知(使用NotificationCompat.Builder )
  16. 【高登世德:为资产证券化引入区块链技术】GBCAX
  17. 英语掌握的程度,与Python有没有关系
  18. 前端学习之路(1)———表格的增行和减行
  19. “毒舌”专家解析大数据应用案例Part1—高德交通大数据应用
  20. java mp4 合并_使用 Python 把多个 MP4 合成一个视频

热门文章

  1. Java虚拟机这一块 —— JVM 调优和深入了解性能优化
  2. HTML常用的转义字符汇总
  3. Django进阶教程
  4. Java开发环境搭建-win10
  5. 基于Python进行餐饮订单数据分析
  6. 【Linux】——库函数
  7. android辅助功能手势,Android辅助功能——全局手势放大实现原理
  8. 怎么使用计算机播放音乐,怎么给电脑设置默认音乐播放器
  9. 家电售后服务外包维修模式,该如何管理
  10. miniconda3官网介绍