Qt 采集音频

1、13年的时候做过一个网络摄像机的Mac客户端,当时就是用Qt做的,通过继承QIODevice,重写writeData来保存PCM音频数据,一切都正常。

2、现如今(17年)在Windows上也写一个同样的客户端,拿着以前音频采集代码移植过来,却发现直接保存的PCM数据不正常,全是噪音。这就郁闷了,难道Windows系统上有做什么特殊的处理吗?波形如下:


3、想破脑袋也没想到是什么原因,开始怀疑人生了,刚开始是用 FILE的fwrite接口来写文件的,于是尝试用QFile来写,看看有没有什么不一样的,意外的是,QFile写的PCM文件播放竟然是正常的。于是开始查阅Qt的相关源代码:QFile、QFileDevice、QIODevice,终于看到这么一段特别的,Windows与Linux的换行符是不一样的,这里有特殊处理,将 '\n' 替换成'\r\n':



4、既然发现了这个特点,那就我也把 '\n' 替换成'\r\n'试试咯,竟然还真正常了,只不过还是有小杂音,波形如下图,我们能看出波形中有一条条的竖线:



5、于是干脆把 '\n'只换成 '\r'试下,竟然真的正常了,这些小竖线都消失了。

6、就这么个换行符,把我整得快趴了。以后如果大家也有碰到类似的,建议直接将  '\n' 替换成 '\r' 试下。

7、以上全是自己的心得笔记,写得不好,大神勿喷。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值