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

news2024/12/23 19:01:09

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

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

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

 

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

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

 

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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

内存泄露的循环引用问题

内存泄漏一直是很多大型系统故障的根源,也是一个面试热点。那么在编程语言层面已经提供了内存回收机制,为什么还会产生内存泄漏呢? 这是因为应用的内存管理一直处于一个和应用程序执行并发的状态,如果应用程序申请内存的速度&…

希尔伯特旅馆里,住着AI的某种真相

“无穷”和“无穷1”,哪个更大? 已经吸收了不知道多少数据的AI模型,和比他多学习一条数据的模型,哪个更智能? 想聊聊这个问题,出于一个偶然的机会。很早之前我在测试ChatGPT的时候,突然想问他个…

简单工厂、工厂方法、抽象工厂模式-这仨货的区别

要想明白这三玩意的区别就需要知道这三玩意的优缺点; 之所以有三种工厂模式,就说明它们各有所长,能解决不同场景的问题; 一、简单工厂模式 UML图 代码 public class MobileFactory {public static Mobile getMobile(String brand)…

【Linux】线程概述、创建线程、终止线程

目录 线程概述1、创建线程函数解析代码举例 2、终止线程函数解析代码举例 橙色 线程概述 与进程类似,线程是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。 进程是 CPU 分配资源的最小单位,线程是操作系统调度执行的最小单位。…

回归预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计学习总结参考资料 预测效果 基本介绍 MATLAB实现…

【笔记整理】轻量级神经网络 MobileNetV3

【笔记整理】轻量级神经网络 MobileNetV3 文章目录 【笔记整理】轻量级神经网络 MobileNetV31、深度可分离卷积2、翻转残差块和线性瓶颈结构3、h-swish 函数和 SE 模块4、网络结构搜索 近年来关于 CNN 的研究在飞速发展,CNN 模型在目标检测、图像分割等领域都取得了…

力扣sql中等篇练习(二十九)

力扣sql中等篇练习(二十九) 1 计算每个销售人员的影响力 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT s1.salesperson_id,s1.name,IFNULL(t.total…

毕业季到底是去大厂还是去小公司

(点击即可收听) 毕业季到底是去大厂还是去小公司 相信很多人在选择大小公司的时候,会比较痛苦,外面的人想进去,里面的人想出来,至于选择大厂还是小公司 这是因人而异的,不同的阶段都可以有不同的选择 进大厂不一定就是对的,进小公司也不一定就是错的,学习东西,增长经…

股票量化分析工具QTYX使用攻略——涨停个股挖掘热门板块(更新2.6.5)

搭建自己的量化系统 如果要长期在市场中立于不败之地!必须要形成一套自己的交易系统。 行情不等人!边学习边实战,在实战中学习才是最有效地方式。于是我们分享一个即可以用于学习,也可以用于实战炒股分析的量化系统——QTYX。 QTY…

软考A计划-试题模拟含答案解析-卷九

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

JetBrains的多数据库管理和SQL工具DataGrip 2023版本在Win10系统的下载与安装配置教程

目录 前言一、DataGrip 安装二、使用配置总结 前言 DataGrip是一款多数据库管理和SQL工具,适用于不同类型的数据库。它提供了丰富的功能和工具,可以帮助开发人员更高效地管理数据库、编写SQL查询和执行数据操作。 DataGrip的主要特点: ——…

这里有3个Tips,也许可以帮你躲过ChatGPT大规模封号 | AIGC实践

据说,从昨天开始,ChatGPT又双叒叕开始大规模封号,很多注册用户收到这样一则消息: 大意是说:OpenAI 发现了你的 ChatGPT 账号存在可疑活动,为了保障平台安全,已自动退款并取消你的 ChatGPT Plus …

驱动开发:内核解析内存四级页表

当今操作系统普遍采用64位架构,CPU最大寻址能力虽然达到了64位,但其实仅仅只是用到了48位进行寻址,其内存管理采用了9-9-9-9-12的分页模式,9-9-9-9-12分页表示物理地址拥有四级页表,微软将这四级依次命名为PXE、PPE、P…

七年老程序员的三四月总结:三十岁、准备婚礼、三次分享

你好,我是 shixin,一名工作七年的安卓开发。 每两个月我会做一次总结,记下这段时间里有意义的事和值得反复看的内容,为的是留一些回忆、评估自己的行为、沉淀有价值的信息。 一转眼 2023 年过去了三分之一,这两个月经历…

【数据湖仓架构】数据湖和仓库:Databricks 和 Snowflake

是时候将数据分析迁移到云端了。我们比较了 Databricks 和 Snowflake,以评估基于数据湖和基于数据仓库的解决方案之间的差异。 在这篇文章中,我们将介绍基于数据仓库和基于数据湖的云大数据解决方案之间的区别。我们通过比较多种云环境中可用的两种流行技…

HTML+CSS+JavaScript制作弹幕效果

全屏弹幕 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>弹幕效果</title><style>/* 设置弹幕的样式 */.bullet {position: absolute;font-size: 20px;color: white;text-shadow: 1px 1px 1px black;white-s…

用Python让小朋友的手绘图跳起来(附源码)

大家好&#xff0c;我是小F&#xff5e; 今天给大家介绍一个非常有趣的项目&#xff0c;基于AI识别&#xff0c;制作儿童手绘图舞蹈图。 只需几分钟&#xff0c;就能自动生成儿童手绘人物或类人角色&#xff08;即具有双臂、两条腿等的角色&#xff09;的动画&#xff0c;而且生…

波奇学C++:模板和STL

什么是模板&#xff1f;为什么我们需要模板&#xff1f; 先假设一个场景&#xff0c;我们要编写一个函数交换a,b两个数的值 void swap(int& a,int& b) {int cmpa;ab;ba; } swap函数可以帮我们交换两个int型的值&#xff0c;那如果要交换的类型是float&#xff0c;do…

基础篇010.1 STM32驱动RC522 RFID模块之一:基础知识

目录 1. RFID概述 1.1 RFID工作原理 1.2 RFID分类 1.3 RFID模块 1.4 RFID卡片 1.5 IC卡和ID卡介绍 1.6 IC卡和ID的区分 2. Mifare卡结构原理 2.1 Mifare卡概述 2.2 Mifare非接触式 IC 卡性能简介&#xff08;M1&#xff09; 2.2.1 Mifare S50与Mifare S70 2.2.2 S5…

操作系统的发展史

█ DOS操作系统 上期提到&#xff0c;20世纪70年代&#xff0c;伴随着计算机技术的成熟&#xff0c;操作系统也进入了一个快速发展阶段。现代操作系统的概念&#xff0c;也在那一时期逐渐形成。 1975年初&#xff0c;MITS电脑公司推出了基于Intel 8080芯片的Altair 8800微型计算…