02.音频基础知识点
目录介绍
- 01.音频开发业务
- 1.1 音频播放
- 1.2 音频编辑
- 1.3 音频算法处理
- 1.4 编解码和格式转换
- 1.5 音频压缩
- 02.了解基础概念
- 2.1 采样率(samplerate)
- 2.2 声道数(channels)
- 2.3 音频帧(frame)
- 03.音频压缩与编码
- 3.1 音频压缩格式
- 3.2 音频编码方式
- 3.3 音频开发相关的API
- 3.4 音频采集录制
01.音频开发业务
1.1 音频播放
可以直接看我的项目代码,基础播放功能有:播放,暂停,下一首,上一首;可以设置多种播放类型:顺序播放,随机播放,单曲循环
1.2 音频编辑
比如音频录音功能,录完后可以进行裁剪,编辑。比如喜马拉雅,懒人听书等等都有这个功能。
1.3 音频算法处理
目前音频算法处理的开源库有:speex、ffmpeg,webrtc等等。
可以使用FFmpeg框架,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
具体使用看官方网站:https://www.ffmpeg.org/
1.4 编解码和格式转换
1.5 音频压缩
后期研究,有点复杂,也没找到什么好的案例
02.了解基础概念
2.1 采样率(samplerate)
采样就是把模拟信号数字化的过程,不仅仅是音频需要采样,所有的模拟信号都需要通过采样转换为可以用0101来表示的数字信号,示意图如下所示:
图片采集于网络,只是作为学习使用

- 蓝色代表模拟音频信号,红色的点代表采样得到的量化数值。
- 采样频率越高,红色的间隔就越密集,记录这一段音频信号所用的数据量就越大,同时音频质量也就越高。
根据奈奎斯特理论,采样频率只要不低于音频信号最高频率的两倍,就可以无损失地还原原始的声音。
通常人耳能听到频率范围大约在20Hz~20kHz之间的声音,为了保证声音不失真,采样频率应在40kHz以上。
常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。
2.2 声道数(channels)
音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。
常见的有单声道(Mono)和双声道(Stereo)
2.3 音频帧(frame)
音频跟视频很不一样,视频每一帧就是一张图像,而从上面的正玄波可以看出,音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频。
这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的,我们可以计算一下一帧音频帧的大小:
假设某通道的音频信号是采样率为8kHz,位宽为16bit,20ms一帧,双通道,则一帧音频数据的大小为:
int size = 8000 x 16bit x 0.02s x 2 = 5120 bit = 640 byte
03.音频压缩与编码
3.1 音频压缩格式
首先简单介绍一下音频数据压缩的最基本的原理:因为有冗余信息,所以可以压缩。
频谱掩蔽效应: 人耳所能察觉的声音信号的频率范围为20Hz~20KHz,在这个频率范围以外的音频信号属于冗余信号。
时域掩蔽效应: 当强音信号和弱音信号同时出现时,弱信号会听不到,因此,弱音信号也属于冗余信号。
简单列出常见的音频压缩格式:MP3,AAC,OGG,WMA,Opus,FLAC,APE,m4a,AMR,等等
3.2 音频编码方式
模拟的音频信号转换为数字信号需要经过采样和量化,量化的过程被称之为编码,根据不同的量化策略,产生了许多不同的编码方式,常见的编码方式有:PCM 和 ADPCM,这些数据代表着无损的原始数字音频信号,添加一些文件头信息,就可以存储为WAV文件了,它是一种由微软和IBM联合开发的用于音频数字存储的标准,可以很容易地被解析和播放。
音频开发过程中,会经常涉及到WAV文件的读写,以验证采集、传输、接收的音频数据的正确性。
3.3 音频开发相关的API
- 音频采集: MediaRecorder,AudioRecord
- 音频播放: SoundPool,MediaPlayer,AudioTrack
- 音频编解码: MediaCodec
- NDK API: OpenSL ES
目前此开源项目采用MediaPlayer播放音频,采集使用AudioRecord
3.4 音频采集录制
这块没作为重点,如果想深入了解,可以参考大神博客:https://yq.aliyun.com/articles/8637
有点复杂……
5.2 参考链接
- Android音频知识介绍-从AndroidRecord看起:https://www.jianshu.com/p/8da3cf058c0f
- Android音频使用总结:http://blog.csdn.net/wenzhi20102321/article/details/53018738
- 大神之作,Android MP3录音实现:http://www.cnblogs.com/ct2011/p/4080193.html
- Android音频开发基础:http://blog.51cto.com/ticktick/1748506?spm=a2c4e.11153940.blogcont8637.16.305f9135xi03I2
- Android音频焦点机制深入理解:http://blog.csdn.net/wusuobupo/article/details/53034506
- Android音频框架笔记 :https://www.jianshu.com/p/9481b1482367