前言:
本篇blog主要从一下几个方面对Audio基础介绍:
一、Audio Overview
二、Audio编码过程
三、Audio编码分类
无压缩:
pcm
音乐编码:
有损:mp3 aac wma ogg …
无损:wav flac alac lpac …
语音编码:
AMR-WB, AMR-NB, GSM, LPC, SPEEX, CELP,G.7xx, ADPCM…
四、Audio基础知识
1.声音是由机械振动产生的
2.振动频率须20~20000 Hz之间才能形成可闻声
3.声音须在媒质中才能传播——以声波的方式传播
我们这里涉及的音频,一般就是指人耳可以听到的声音频率,在20Hz~20kHz之间的声波称为音频。
样本(Sample)
被采样的原始资料,如一段连续的声波波形。
采样频率(Sampling Rate)
采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。
采样深度(Bit Depth)
采样深度可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。连续的模拟信号按一定的采样频率经数码脉冲取样后,每一个离散的脉冲信号被以一定的量化精度量化成一串二进制编码流,这串编码流的位数即为采样深度,也称为量化精度。
Nyquist-Shannon采样定律
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息。
声道(Sound Channel)
是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时相应的扬声器数量。
五、Audio模块需要重点解决什么问题
Playback
Recording
Device control
Volume control
六、Linux中Audio框架
OSS(Open Sound System)
早期Linux版本采用的是OSS框架,它也是Unix以及类Unix系统中广泛使用的一种音频体系。
由于缺乏对最新内核特性的支持等原因,已被Linux内核放弃。
详细信息可以参考http://www.opensound.com/
ALSA(Advanced Linux Sound Architecture)
Linux社区为取代OSS提出的一种新框架。
在Kernel 2.5版本中正式引入。
ALSA有如下特性:
高效地支持大多数类型的Audio Interface
高度模块化的声音驱动
线程安全设计
在用户空间提供了alsa-lib来简化应用程序的编写
与OSS API保持兼容
Android中Audio框架