Android音视频开发-音频篇-音频的原理

致知在格物,物格而后知至。所谓致知在格物者,言欲致吾之知,在即物而穷其理也                                                                                                                       

意思讲的是要探究事物的原理,从而获得智慧。 写代码也是如此,只有了解其中的原理,才能运用自如

所以我们要想学好Android的音视频开发,必须先了解什么是音视频,音视频的构造,在计算机中是怎样表示的等基本原理。

 

Android音视频架构-学习路线规划 

本文就是为大家讲解音频的原理,先看本文的主要内容

Android音视频开发-音频篇-音频的原理_第1张图片

 

一. 声音是什么

1. 声音的概念:物体振动产生的声波,可以用波形图来表示声音

2. 声音的三要素:分别为音调,音量和音色。

音调高的表现是声音尖锐,音调低的表现是低沉。

音量高的表现是声音响度大,音量小的表现是声音响度小

音色指声音品质和声波的频谱分布有关,再细点就是和产生振动或者传递振动的物体的谐振有关, 比如说和物体的形状,体积,密度,温度,湿度,晶格取向等均有关系

 

在相同的时间段内,音调高的声波的个数多,音量高的波形振幅大,后面我们对音频进行变调处理时和音量调节也是通过这个原理来的

 

二. 声音是怎么转为音频的

通过麦克风等设备将声音信号转为电信号,在通过进一步处理为计算式可识别的数字信号,最后编码为可播放的音频文件。

我们不必去细究每一个点,但是其中有几个关键的概念我们要知道,就是采用率,量化位数,声道数。这几个也是我们后面音频录制编码或者解码时需要处理的东西

1. 音频的量化与编码

采样率:因为我们不可能采集到连续的声音,所以这时候就有采样率的概念,即1s中内采样的次数(采样是等时间间隔的),也就是说一秒中内我们记录多少个声音数据。采用率越高,对声音的还原程度就越高,采样频率一般为8kHz(电话音质),16kHz, 32klHz, 44.1kHz(CD音质),48kHz(录音室音质)

量化位数:指的是一个采样要用多少bit来存放,常用的是16bit。量化位数越高也就代表能表达的声音范围多大。

声道数:分单声道,双声道,多声道

这里引出码率的概念,可以简单理解为音频文件的大小,一个未压缩的音频流(PCM)码率计算公式为

码率 = 采用率 * 量化位数 * 声道数

我们可以来算一下, 采用率44.1k(cd音质),量化位数16bit, 双声道的 5分钟的音频大小是多少

44.1k * 16 * 2 * 5 * 60  ≈ 50M 

显然我们平时见的音频文件并没有这么大,接下来我们就要引出下面的内容,音频的压缩

 

2. 音频的压缩

音频的压缩主要有两种,无损压缩与有损压缩

无损压缩:压缩后可复原回原始数据

有损压缩:压缩后无法复原回原始数据

压缩的原理:

(1)   去除冗余: 人类可识别的的声音频率是20Hz 到 20k Hz,所以根据这个原理,可将音频不在该频率段内的数据去除

(2)频谱掩蔽效应:一个频率的声音能量小于某个阈值之后,人耳就会听不到,这个阈值称为最小可闻阈。当有另外能量较大的声音出现的时候,该声音频率附近的阈值会提高很多,即所谓的掩蔽效应

(3)时域掩蔽效应:当强音信号和弱音信号同时出现时,还存在时域掩蔽效应。即两者发生时间很接近的时候,也会发生掩蔽效应

当然,这些我们只要了解就可以,不是我们的重点研究内容。

根据这些压缩原理,现在已经诞生了很多音频的编解码器

 

可以先简单了解下有哪几种编码后对应的格式:

  • 无损格式,例如WAV,FLAC,APE,ALAC,WavPack(WV)
  • 有损格式,例如MP3,AAC,Ogg Vorbis,Opus.

 

目前音频最广泛应用的是MP3格式,而AAC因为其压缩比较高,音质也较好而广泛用于泛娱乐化直播等场景中

接下来的文章我会结合相应的项目来重点介绍一些常用的编码格式

你可能感兴趣的:(Android音视频-音频篇)