-
基础知识
- 声音三要素:频率(声音的高低)、振幅(响度)、波形(音色),低频更容易绕过障碍物,传播的远。
- 数字音频产生:连续的模拟信号转化为离散的数字信号,先进行采样,一般为人耳最高频率的两倍,44.1khz,即1秒采样44100次。然后对每个采样进行量化,转化成数字。最后进行存储,即编码。有很多种格式,裸数据PCM格式,纯原始数据,描述他需要3个概念,量化的格式,采样率,声道数。如果量化格式是2字节,采样44100,声道2。那么一秒里的大小为44100162,大约为1.2M。
- 如何采集声音的:麦克风碳膜十分敏感,声音是一种波,会压缩碳膜,下方有一个电极,会接触它,接触的长短和频率就和声音的振幅和频率有关,这就完成了从声音信号到电信号的转换,之后经过放大电路,就可以完成2的采样的。
- 分贝:表示声音强度的单位。
- 音频编码:如果使用裸数据传输,可以看到,数据量是非常大的,所以要对数据进行压缩,指标就是压缩比,压缩的原理就是去掉冗余的信号,包括不能贝人耳感知到的信号。常见的编码格式包括WAV(就是在PCM文件前加入藐视PCM的三个元素信息,不进行压缩处理。他的音质非常好,适合做中间文件素材等)、MP3(有不错的压缩比,听感就非常WAV格式)、AAC、OGG等
- 图像的表示:红绿蓝没发被分解,是三原色,等量的三色光变成白光。屏幕上每个像素点又三个子元素点促成,可以用RGB(每一个原色使用浮点0.0-1.0或者整数表示0-255)、YUV(主要用于彩色引号的传输,包括明亮度,色彩,饱和度)
-
安卓平台的音频渲染
SDK提供了三套API:
MediaPlayer:封装的比较高,使用比较简单,适合在后台长时间播放音乐;
SoundPool:适合播放短音频,比如按键铃声等;
AudioTrack:是更加底层的API,需要配合解码器使用
NDK提供了OpenSL ES的C语言接口,提供了强大的音频处理等功能。
-
安卓平台的视频渲染
使用OpenGL的嵌入式版本OpenGL ES,是OpenGL的一个子集。它是跨平台设计的,可用于2D3D的渲染的底层平台库。它是跨平台的,所以每个平台都有它的实现。系统需要提供上下文环境和窗口的管理。
下一篇会讲OpenSL 和 OpenGL的具体使用
网友评论