前言:
今天我们来分享一个开源的音频采集代码,现在大部分音频采集都是通过ALSA框架去采集,如果大家把ALSA采集代码学懂,那么大部分的音频采集都可以搞定。这个代码是用ALSA进行音频PCM的采集并保存到本地文件。
一、alsa框架的介绍:
ALSA是Linux音频采集的声音框架,它提供了一系列API让开发者进行音频的采集、录音、播放等功能。目前ALSA框架广泛运用在嵌入式、Android开发等领域,下面这个是一般的ALSA代码架构采集流程。

而具体的代码如下:
我们来讲解一下这个代码的整体流程:
第一步:打开ALSA音频设备

第二步:params申请内存,并初始化hwparams参数

第三步:设置多路数据在buffer存储方法:

第四步:设置ALSA采样格式:

第五步:设置声道数

第六步:设置采样率

第七步:设置ALSA最大缓冲时间:

第八步:设置ALSA缓冲时间:

第九步:设置周期时间:

第十步:使能PCM设备:

第十一步:读取pcm设备的数据,然后保存到文件中:

目前一个标准的Linux音频采集,基本上都要按照以上的十个步骤进行采集,否则无法利用ALSA采集到PCM数据
最后:
对嵌入式音频开发感兴趣的朋友,可以加入星球来学习,课程内容说明如下:
ai识别加音视频推流实战项目进度,整个项目从7份开始,前两部分的ai识别工程基本上已经讲解完了(还有人脸识别的工程代码会进行重新重构一篇),当然这里面等录制完了第三部分的音视频推流开发内容,还会对ai识别这部分做补充,比如说yolo或者ssd等算法模型的原理讲解,还有就是自己怎么去训练模型;目前已经开始在录制音视频推流开发的第三部分,已经录制了两个小节部分,第三部分的内容会多搞点,比如理论知识的讲解,然后再结合我们的推流代码工程,可以学习到mpp和ffmpeg,以及rtmp、srt等相关协议,还包括h264、h265的码流结构和编码结构等相关知识点,甚至还包括工作当中常遇见家的问题,比如说,音视频不同步的问题,同时最近又添加了最新的课程内容:

最新课程内容更新:

可以直接扫码加入星球:

最后感谢大家的支持哈,加入了星球的朋友,记得加我微信:tu18879499804,我拉大家进解答群!
课程需要啥基础:有编程语言的基础就行!给自己一个实战机会,肝就完事!