1. 问题现象
常见的音频问题现象描述如下:
- 电流音,爆音,滋滋声或者嘟嘟声
- 声音断断续续,听不清楚
- 回声,能听到自己说话的声音
2. 问题排查
2.1 参数配置问题
上面也有提到,音频是一个特别敏感的东西,涉及到许多参数配置,一旦配置不太匹配,就会导致声音听起来非常诡异(比如:采样率是 32000Hz 的音频,给播放器配置为 8000Hz 或者 44100Hz,就明显会出现音频慢放或者快放的效果)。
常见的音频参数和基本原理,可以参考我的这篇文章,这里就不再赘述了:《Android音频开发(1):基础知识》
我们只需要注意的是,无论是采集和播放,都要给系统的 API 以及第三方的库配置正确的参数,如:采样率、位宽、声道数等等。
2.2 代码层面的原因
常见的代码层面的问题有如下几种:
- 音频 buffer 大小不匹配,一段 1024 bytes 的音频,放到了 2048 bytes 的数组,导致尾部有随机数
- 音频 resample 重采样的算法问题,导致采样出来的数据出了问题
- Android 的 ByteBuffer 取出数组,是不能直接用 .array() 方法的,而需要用 .get() 方法
- iOS 系统,其他 app 通过系统 API 更改了 AudioSession 采样率的配置
2.3 网络波动
视频是一帧一帧连续的图像构成的,在播放过程中,如果