12.2 Android的音视频处理

毫无疑问,音频(Audio)和视频(Video)也是多媒体的重要组成部分。帮助开发者处理音视频相关的操作,是Android提供的重要功能之一。

12.2.1 Android音视频的支持框架

Android的音视频支持框架,如图12-2所示。实现音频和视频的输入输出,首先需要设备底层具有音视频相关的硬件设备和驱动的支持。Android为了适应种类繁多的音视频设备,在音视频硬件之上抽象出来两个层次。第一个层次是音频硬件抽象层(Audio Hardware Interface),该层向上提供了统一的音视频操作接口,用来屏蔽不同硬件设备实现细节的差异,设备提供商需要负责实现该抽象层的各个接口。而在硬件抽象层之上,还增加了一个音频控制层(Audio Flinger),它运行在独立的线程内,用RPC的方式与上层通信,为上层提供更为精简的音视频操控接口,并负责将不同的音轨(Audio Track)混合起来,输入到硬件中。

而音视频操作中最核心的编码解码、进度控制等功能实现,则由开源项目OpenCORE [1]来提供。这使得Android能够支持多种格式的音视频播放和录制[2]。在框架层中,android.media包通过JNI的方式封装了OpenCORE的实现,为开发者提供了音视频处理的支持。

12.2 Android的音视频处理 - 图1

图 12-2 Android音视频实现框架

[1]http://www.opencore.net/。

[2]Android所支持的音视频格式,可以参见:http://androidappdocs.appspot.com/guide/appendix/media-formats.html。