视频采集到录制 - 音频采集到降噪

继续上篇的视频采集到录制

        视频采集相对来说还是算正常,如果资源够用,使用第三方库也是种解决办法

        但音频采集网上资料相对也少,走了一遍,也发现存在很多坑

 

1. 音频采集

        一般来说,采用MIC采集,采集出来的格式为PCM格式

        PCM格式非常简单,长度也很好估算,方便找问题

        首先是采集功能要打开,否则采集不到任何声音。这个也是坑,默认的板子一般是音频采集是关闭的。

         输入 alsamixer

  

如果是录音功能不正常,要看下录音这个是否已经打开且选择正确的录音

还有要注意,这里改了的话,重启之后,会改回去的,因此要把设置配置成启动:

  1. 首先利用alsamixer进行配置,确认无误后保存
  2. 然后 alsactl -f /var/lib/alsa/asound.state store  
  3. 将配置保存至 asound.state 
  4. 然后在 /etc/init.d/rcS 添加如下
if [ -f "/var/lib/alsa/asound.state" ]; then
    echo "ALSA: Restoring mixer setting......"
    /usr/sbin/alsactl -f /var/lib/alsa/asound.state restore &
fi

 这样才算完成

2. 降噪处理

一般采集音频都需要降噪,降噪算法很多,这里推荐rnnoise,这个基于神经网络,比较优秀,就是比较占资源,且搭建rnn环境也比较麻烦

但这里也有坑:

    1. demo仅支持 48k,单通道降噪。注意是单通道,48k,如果输入44.1k也可以,但效果不好。

    2. 每次调用接口,只能传入480BytePCM数据,如果一次传入其他长度,需要自己内部协调

    3. 效率不高,在嵌入式环境下使用,需要评估是否适合

3. aac编码

pcm转aac,一般会用libfaac库

但要注意一次性输入长度,这个很多地方都提到(降噪输入长度=输出长度,只是降噪算法有自己的长度要求,一般来说这个一次长度跟采集PCM原始长度是不一致的)

每次输入PCM长度都是固定的,也就是说不足或存在多路,需要自己进行内存维护,否则达不到预期效果(百思不得其解),一般不会报错,只是编码出来的数据很奇怪

以下是我整理一个流程,主要是解决各个环节长度问题

 

下期讲下,视频与音频复合情况,也有不少坑值得记录

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值