Android系统能够录制、播放各种不同形式的本地和流式多媒体文件。Android的多媒体系统为Android设备多媒体的开发和应用提供了非常好的平台。
一、Android多媒体系统架构
Android的多媒体框架涉及到应用层、JAVA框架、C语言Native框架、硬件抽象层(驱动层)等环节。下面是Android的多媒体系统框架层次图。
图13-1 Android多媒体系统框架层次图
从图中可以看出,Android多媒体系统架构又分为四层结构,分别是Java应用组件层、Java应用程序框架层、系统运行库C语言Native层以及Linux内核驱动层,下面按照从上到下的顺序分别介绍
1)Java应用组件层
Android平台提供了三个不同的多媒体功能。
Camera:Android框架包含了对各种摄像机及其功能的在Android设备上的支持,它可以用户在其应用程序中捕获的照片和录像。
Media Recorder:Android的MediaRecorder包含了Audio和video的记录功能。
Media Player:Android的MediaPlayer包含了Audio和video的播放功能。
2)Java应用程序框架层
Android平台提供了四个不同的Java组件编程接口:Camera、MediaRecorder、MediaPlayer和Surface。这四个编程接口,几乎可以实现Android系统所有多媒体功能。
Android.Hardware.Camera:该Java类提供了对摄像机操作的编程接口。
Android.Media.MediaRecorder:该Java类提供了在Android的界面上,Audio和Video两个应用程序都是调用MediaRecorder实现的。
Android.Media.MediaPlayer:该Java类提供了在Android的界面上播放Audio和Video两个应用程序的编程接口。
Android.View.Surface:被screen compositor管理的raw buffer句柄。
3)系统运行库Native层
Android系统运行Native库层主要分为Camera硬件库、PacketVideo框架和Surface库三部分:
Camera硬件库:提供了操作底层Camera硬件的C语言库。
PacketVideo框架库:多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H 264、AAC、ARM。
ALSA Audio:又名高级Linux声音体系(Advanced Linux Sound Architecture)。是Linux内核中,为声卡提供的驱动组件,以替代原先的OSS(开放声音系统)。 一部分的目的是支持声卡的自动配置,以及完美的处理系统中的多个声音设备,这些目的大多都已达到。另一个声音框架JACK使用ALSA提供低延迟的专业级音频编辑和混音能力。
Android.View.Surface:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。
4)Linux内核驱动层
该层提供了对硬件驱动的支持,包括摄像机、硬件编解码、音频/视频驱动等。
二、Android多媒体系统功能
多媒体主要包括两方面的内容:音频视频的输入输出、编解码环节。
其中,输入输出环节由其他方面的硬件抽象层实现,中间处理环节主要由PacketVideo实现,可以使用硬件加速。
总的来说,Android的多媒体系统通过其开放平台,以强大的函数库支持,其功能包括如下内容:音频播放、视频播放、摄像功能、音频录制、视频录制。
三、OpenCore简介
OpenCore是Android多媒体系统的核心。与Android的其它程序库相比,OpenCore是一个基于C++代码实现的多媒体库,它定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。
它主要包含了两大方面的内容:
PVPlayer:提供媒体播放器的功能,完成各种音频(Audio)、视频(Video)流的回放(Playback)功能;
PVAuthor:提供媒体流记录的功能,完成各种音频(Audio)、视频(Video)流的以及静态图像捕获功能;
PVPlayer和PVAuthor以SDK的形式提供给开发者,可以在这个SDK之上构建多种应用程序和服务。
四、OpenMAX简介
OpenMax是一个多媒体应用程序的框架标准。其中,OpenMax IL(集成层)技术规格定义了媒体组件接口,以便在嵌入式器件的流媒体框架中快速集成加速编解码器。
OpenMax分成三个层次,自上而下分别是,OpenMax DL(开发层),OpenMax IL(集成层)和OpenMax AL(应用层)。三个层次的内容分别如下所示。
第一层:OpenMax DL(Development Layer,开发层)
OpenMax DL定义了一个API,它是音频、视频和图像功能的集合。硅供应商能够在一个新的处理器上实现并优化,然后编解码供应商使用它来编写更广泛的编解码器功 能。它包括音频信号的处理功能,如FFT和filter,图像原始处理,如颜色空间转换、视频原始处理,以实现例如MPEG-4、H.264、MP3、 AAC和JPEG等编解码器的优化。
第二层:OpenMax IL(Integration Layer,集成层)
OpenMax IL作为音频、视频和图像编解码器能与多媒体编解码器交互,并以统一的行为支持组件(例如,资源和皮肤)。这些编解码器或许是软硬件的混合体,对用户是透 明的底层接口应用于嵌入式、移动设备。它提供了应用程序和媒体框架,透明的。S编解码器供应商必须写私有的或者封闭的接口,集成进移动设备。IL的主要目 的是使用特征集合为编解码器提供一个系统抽象,为解决多个不同媒体系统之间轻便性的问题。
第三层:OpenMax AL(Appliction Layer,应用层)
OpenMax AL API在应用程序和多媒体中间件之间提供了一个标准化接口,多媒体中间件提供服务以实现被期待的API功能。