java音频采样_音频重采样的坑
背景
使用webrtc进行语音通话,网络正常的情况下,延迟比较大。
进行过如下分析:
(1)从socket收包到webrtc处理完音频没有耗时长的操作,排除了webrtc处理音频引入的延迟
(2)与其他终端进行通话无延迟
通过以上的分析,最终确认跟设备有关。分析发现Android设备存在重采用的问题。
重采样的原因
音频系统中可能存在多个音轨,而每个音轨的原始采样率可能是不一致的。比如在播放音乐的过程中,来了一个提示音,就需要把音乐和提示音都混合到codec输出,音乐的原始采样率和提示音的原始采样率可能是不一致的。问题来了,如果codec的采样率设置为音乐的原始采样率的话,那么提示音就会失真。因此最简单见效的解决方法是:codec的采样率固定一个值(44.1KHz/48KHz),所有音轨都重采样到这个采样率,然后才送到codec,保证所有音轨听起来都不失真。
但是这样也引入了一个问题:缓冲区大小越高,音频越稳定,但延迟越高,缓冲区设置得太小可能会导致CPU过载,因为它必须更加努力地在相同的时间内提供更多的缓冲区,这将导致播放期间出现毛刺。
解决办法
修改audio_hw.h
将#define SHORT_PERIOD_SIZE (1360*2)修改成
#define SHORT_PERIOD_SIZE (25*2)
java音频采样_音频重采样的坑相关推荐
- pcm 8k单声道和双声道采样_音频接口PCM
1 简介 PCM (Pulse Code Modulation) 是通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法.图 1为 4 bit 采样深度的PCM 数据量化示意图.PCM 数字音频 ...
- java 转换音频格式_音频格式转换
我在转换WAV文件的音频格式时遇到麻烦. 我正在从麦克风录制声音,并且声音以以下格式录制:PCM_SIGNED 44100.0 Hz,16位,单声道,2字节/帧 我想将上述格式转换为ULAW 8000 ...
- java转换音频采样率_音频采样率转换
buf_sizePCM = frame_info.samples * frame_info.channels; memcpy(bufferPCM,pcm_data,buf_sizePCM); //采样 ...
- 傅里叶变换音频可视化_音频可视化中的信号处理方案
声明: 原创文章,未经允许不得转载. 音频可视化是一个"听"起来非常"美"好的话题,其复杂程度很大程度上依赖视觉方案(一些例子),不同的视觉方案决定了你的技术方 ...
- python音频特征提取_音频特征提取方法和工具汇总
本文首发于:行者AI 绝大多数音频特征起源于语音识别任务,它们可以精简原始的波形采样信号,从而加速机器对音频中语义含义的理解.从20世纪90年代末开始,这些音频特征也被应用于乐器识别等音乐信息检索任务 ...
- python增大音频音量_音频数据增强及python实现
博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/13404523.html 音频时域波形具有以下特征:音调,响度,质量.我们在进行数据增强时,最好只 ...
- python音频特征提取_音频特征提取——librosa工具包使用
作者:桂. 时间:2017-05-06 11:20:47 前言 本文主要记录librosa工具包的使用,librosa在音频.乐音信号的分析中经常用到,是python的一个工具包,这里主要记录它的相 ...
- 音频剪切_音频编辑入门指南:剪切,修剪和排列
音频剪切 Audacity novices often start with lofty project ideas, but sometimes they lack the basics. Know ...
- 电脑显示未安装任何音频输出设备_音频频谱分析仪插件Voxengo SPAN Plus介绍及安装教程...
SPAN Plus是用于专业声音和音乐制作应用程序的实时"快速傅立叶变换"音频频谱分析仪AAX,AudioUnit和VST插件.SPAN Plus是免费SPAN插件的扩展版本:SP ...
最新文章
- KeyedVectors python 从词向量文件中快速生成{词:词向量}
- 网络推广外包——网络推广外包指出新站上线前一定要做好自我检测
- 指针常量 和 指向常量的指针区别
- vue 数组长度_深入理解Vue的数据响应式
- php点击查看更多,微信小程序加载更多和点击查看更多功能介绍
- Workflow Core + asp.net core 5.0 实现简单审批工作流
- mysql1000w数据怎么加索引_给mysql一百万条数据的表添加索引
- matlab 引号内变量,MATLAB 7.0 单引号内变量现实问题!
- jquery的基本使用-入口函数
- unity5, Configurable Joint: Anchor, Connected Anchor, Auto Configure Connected Anchor
- 用gambit学博弈论---零和博弈
- win7查询计算机硬盘sn,电脑win7系统查询硬盘序列号的方法
- QT中双击mdiArea区域打开文件(监听双击事件)
- 侦探系列-照片隐藏信息提取
- matlab读lExcel文字,matlab读取excel文件及其数据处理
- 基于redis实现抢红包功能(包括余额退回处理)
- 通俗易懂理解几何光学(二)共轴球面系统与理想光学系统
- AI2的mosaic和Aristo项目简介
- Hyperledger Explorer 区块链浏览器
- 视频怎么制作虚化边框背景的效果?
热门文章
- 【剑指offer】面试题47:礼物的最大价值(Java)
- python中的变量的作用_Python中的变量作用域
- centos安装php服务器,在CentOS上安装搭建PHP+Apache+Mysql的服务器环境方法
- rk3288 android编译环境搭建,RK3288系统编译及环境搭建
- python编程环境安装包_Python环境安装与配置
- 医院计算机管理工资,医院工资管理系统的设计与开发
- 吉林大学计算机英语成绩,吉林大学复试出结果,初试分差84分,复试成绩却相差无几!...
- mysql 8 修改root密码忘记_忘记mysql8或者mariadb5及以上 的root密码如何更改
- POSIX互斥锁api函数
- 图像处理 --- 二、数字图像处理基础