一、音频的本质
音频就是一段连续的波。
在AU里查看一首音乐,就是这样的界面。
- 主界面上分成了两个部分,分别是左右声道;
- 绿色条的高度就是声音的强度,可以理解为音量大小,最大为0dB。
把波形放大查看,
这绿绿的曲线,是不是很像股票,哈哈哈。
二、音频属性
还是使用MediaInfo查看音频的属性,然后对照着说。
2.1 采样率
在真实的物理世界中,声音是连续的。而在电子世界中,数据都是离散的,不管是声音,还是拍照、录像。当采样的频率很大,大到人的眼睛和耳朵都分辨不出来,那么人就认为是连续的。
iPhone的Retina屏幕概念,显示器的抖动算法,视频的原理……,都是这个原理。
采样率最直白的解释就是:一秒钟采样多少个点。
最常见的音频采样率有三种:8kHz系列,44.1kHz系列和48kHz系列。
- 音乐:一般是44.1kHz系列,手机中的有些铃声可能是22.05kHz;
- 电视、电影:一般是48kHz
- 语音通话:一般是8kHz或者16kHz
语音通话的采样率比音乐要低很多,这也就是另一篇博文里我说音乐下采样到通话中时,音质下降很厉害的原因。
在AU里直观查看,
图中一个个的点就是音频的采样点,44.1kHz意思就是:每一秒钟的音频,有44100个点。
2.2 位深
采样率描述的是:采样点在横坐标——时间维度上的密集程度。
位深描述的是:采样点在纵坐标——声压维度上的精度。打个比方:假如最小音量是1,最大音量是100,位深描述的就是精确到小数点后几位。如果不要小数点,音量就只能有100级;如果精确到小数点1位,音量就能有1000级,描述音量就会更加精准、细腻。
最常见的位深是16位。
2.3 声道
就是有几条音轨,反应在AU里,就是有几个绿条。
音乐一般都是双声道,电影有2.1声道,或者Dolby环绕立体声,包括:5.1声音、7.1声道14.1声道等,其中.1表示低音。
安卓系统在system/media/audio/include/system/audio-base.h里定义了很多的声道:
185enum {
186 AUDIO_CHANNEL_REPRESENTATION_POSITION = 0x0u,
187 AUDIO_CHANNEL_REPRESENTATION_INDEX = 0x2u,
188 AUDIO_CHANNEL_NONE = 0x0u,
189 AUDIO_CHANNEL_INVALID = 0xC0000000u,
190
191 AUDIO_CHANNEL_OUT_FRONT_LEFT = 0x1u,
192 AUDIO_CHANNEL_OUT_FRONT_RIGHT = 0x2u,
193 AUDIO_CHANNEL_OUT_FRONT_CENTER = 0x4u,
194 AUDIO_CHANNEL_OUT_LOW_FREQUENCY = 0x8u,
195 AUDIO_CHANNEL_OUT_BACK_LEFT = 0x10u,
196 AUDIO_CHANNEL_OUT_BACK_RIGHT = 0x20u,
197 AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x40u,
198 AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x80u,
199 AUDIO_CHANNEL_OUT_BACK_CENTER = 0x100u,
200 AUDIO_CHANNEL_OUT_SIDE_LEFT = 0x200u,
201 AUDIO_CHANNEL_OUT_SIDE_RIGHT = 0x400u,
202 AUDIO_CHANNEL_OUT_TOP_CENTER = 0x800u,
203 AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT = 0x1000u,
204 AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER = 0x2000u,
205 AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT = 0x4000u,
206 AUDIO_CHANNEL_OUT_TOP_BACK_LEFT = 0x8000u,
207 AUDIO_CHANNEL_OUT_TOP_BACK_CENTER = 0x10000u,
208 AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT = 0x20000u,
209 AUDIO_CHANNEL_OUT_TOP_SIDE_LEFT = 0x40000u,
210 AUDIO_CHANNEL_OUT_TOP_SIDE_RIGHT = 0x80000u,
211 AUDIO_CHANNEL_OUT_MONO = 0x1u, // OUT_FRONT_LEFT
212 AUDIO_CHANNEL_OUT_STEREO = 0x3u, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT
213 AUDIO_CHANNEL_OUT_2POINT1 = 0xBu, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_LOW_FREQUENCY
214 AUDIO_CHANNEL_OUT_2POINT0POINT2 = 0xC0003u, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_TOP_SIDE_LEFT | OUT_TOP_SIDE_RIGHT
215 AUDIO_CHANNEL_OUT_2POINT1POINT2