Linux系统 QT+Faac实时音频采集编码(QT音频采集篇)

本文介绍了在Linux系统上使用QT进行音频实时采集并利用FAAC编码的过程。作者分享了项目中的关键点和部分代码,包括音频采集流程、简化版的QT采集代码以及注意事项,如正确配置.pro文件、使用二进制方式打开文件等。文章指出,虽然可以直接将数据写入文件,但为了后续编码,选择通过DataPool内存空间进行数据处理。
摘要由CSDN通过智能技术生成

一:前言

刚毕业不久,接到的第一个项目就是音频采集。

要求在树莓派Linux系统上用QT进行音频采集,然后实时编码发送给window上的一个程序。

完成项目期间搜集了许多相关资料,苦于网上信息太过零散,大多都是存成文件传输,几乎没有实时性相关的完整的流程代码。FAAC编码器相关的资料也寥寥无几,在使用期间踩了不少坑。

因此在这里分享一下自己项目中的一些要点和部分代码,以及一些注意事项。可能代码比较稚嫩,有什么问题希望大佬指点。


二:音频采集的流程图如下:



三:具体代码

因为本次只讲采集,所以自己写了一个QT采集的代码,为了更好理解,文件不包含FAAC编码。编码将在下次博客中加入。

下面程序能实现实时采集PCM的数据,并存到文件中。

定义了一个DataPool内存空间,用于存放音频数据。如果存满了,从首地址开始将新数据覆盖原来数据。在槽函数中,一边从设备读取数据存到DataPool,一边从DataPool拿来写入文件。

其实想写文件完全没必要这么复杂,也可以这么操作:

QFile inputFile;  //创建QFile文件句柄

inputFile.setFileName("/home/pi/DeskTop/New.Record/PCM 16000 16.PCM"); //设置文件存储位置

inputFile.open(QIODevice::WriteOnly | QIODevice::Truncate); //以只写的形式打开。

audioInput->start(&inputFile);

然后运行,就能开始启动录音并直接写到文件里,连槽函数都用不到,和下面程序功能完全一样!

下面这么做的意义,是因为后续音频编码要从DataPool不断取数据,干脆在这里提前贴上,让大家更好地理解槽函数内的操作。


.h 头文件


/*本程序实现简单的QT音频录音并实时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值