录音和播放

安卓手机上 K 歌,声音延迟怎么解决?

烈酒焚心 提交于 2020-05-04 06:07:51
这篇文章可以为你提供一个解决录音和播放同步问题的思路,而且解决了声音从手机传输到耳机上有延时的问题。 初识音频 在开始之前,我先简单介绍一下音频相关的基础知识,方便下文理解。 我们知道声明是一种波,经过离散处理后,在程序中我们可以理解为一个无限接近该波形的一个数组,数组下标就是时间轴,对应的值是声音的幅度轴。 音频最基本的特性有: 采样频率(Sample Rate) :每秒采集声音的数量,它用赫兹(Hz)来表示。 采样精度(Bit Depth) :它表示每次采样的精度,位数越多,能记录的范围就越大。 声音通道(Channel) :简单理解就是各个通道有一个独立的声音,它们会同时发出来。 这不是本文的重点,所以不再展开了,这里只是简单说明一下声音跟开发的关系。点击这篇文章可以帮助你更好地了解: 音频基础认识 。 场景描述 我们在 Android 手机上进行 K 歌的时候,是要一边跟着伴奏的声音,一边进行录音的,最后把两个声音合并成一个声音。在实际处理的时候,你会发现录音的音轨和伴奏的音轨是会有个时间差,表现为录出来的声音跑在伴奏的后面了。如果是通过有线耳机或手机扬声器一边听伴奏一边录音,这个延迟会稍微没那么严重,但是人耳也能感受到滞后了;如果是用延时比较大的蓝牙耳机来一边听伴奏一边录,那么延迟问题就会很凸显了。本文的测试音频录音时用的是蓝牙耳机。 一线希望

Android 实现边听边录音探究

99封情书 提交于 2020-05-04 04:49:48
关于我: 90后全栈独立开发者,18 年至今为一名自由职业者,19年成立 AgileStudio工作室 ,提供靠谱的软件定制服务。 场景描述 音乐中只有一种声音有时候很单薄的,我们经常希望把不同的声音加在一起,但是在录制的时候我们需要严格同步起来,把两种声音的时差控制在听觉允许的范围内,才可能获得我们想要的结果。另外一点,在录制的时候,为了不把播放的声音和人声或者器乐声混到一块,通常都需要录制者带着耳机边听边录。 为了实现最终两个或者多个声音能非常好的契合到一起,除了要解决录音和播放的同步,还需要考虑到声音从手机传输到耳机上的延时。这个场景除了会出现在一些比较专业的音乐软件上,常用的 K 歌软件也不可避免会遇到这个问题。 一线希望:MediaSyncEvent? 先抛出结论:并不能解决问题~ 肯定先从 SDK 入手,发现 AudioRecord 里面有个方法 startRecording(MediaSyncEvent syncEvent) , 再看了一遍文档, 仿佛在黑暗中看到了一丝光亮。 The MediaSyncEvent class defines events that can be used to synchronize playback or capture * actions between different players and recorders.