Android 多媒体系统

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功能。

时间: 2024-10-11 20:42:42

Android 多媒体系统的相关文章

Android多媒体系统的结构和业务

Android多媒体系统的结构和业务 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) 多媒体系统的宏观结构 多媒体的Java类(Java Class of Media) 其所实现的Java包是android.media,实现了mediaplayer和mediarecoder等几个重要的类 多媒体部分Java本地调用部分(JNI) 这部分是Java类和C++本地代码的接口,编译成目标是libmedi

Android多媒体系统的业务

请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android 多媒体应用的主要业务 Music Player Video Player Camera Sound Recorder VideoCamera Media Metadate 媒体播放器结构 媒体播放器是多媒体中最重要的一个环节,媒体播放器涉及以下内容: 本地媒体框架中的媒体播放器部分 PVPlayer(实现的核心代码) 音频.视频编解码

[深入理解Android卷二 全文-第七章]深入理解ContentProvider

由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容 第7章  深入理解ContentProvider 本章主要内容: ·  深入分析ContentProvider的创建和启动,以及SQLite相关的知识点 ·  深入分析Cursor query和close函数的实现 ·  深入分析ContentResolver openAssetFileDescriptor函数

Camera框架简介

Camera应用是android多媒体系统中典型的采用C/S架构设计的应用,Client和Server在两个独立的线程间通过Binder机制通信.下面是Camera的总体构架图. 从应用层的Camera.java(packages\app\Camera),到framework java部分的Camera.java(framework\base\core\java\android\hardware),再到JNI层的android_hardware_camera(framework\base\cor

第1章 音频系统

转载请注明:LXS, http://blog.csdn.net/uiop78uiop78/article/details/8787779 对于一部嵌入式设备来说,除了若干基础功能外(比如手机通话.短信),最重要的可能就是多媒体了——那么一个最简单的问题,什么是多媒体呢? 这个术语对应的英文单词是“Multi-Media”,直译过来就是多媒体.名称就很好地解释了它的含义,我们引用Wikipedia上对其的详细定义: Multimedia is media and content that uses

Android源码分析--MediaServer源码分析(一)

MediaServer中包括了系统中的许多重要的Server: AudioFlinger:音频系统中的核心服务 AudioPolicyService:音频系统中关于音频策略的重要服务 MediaPlayerService:多媒体系统中的重要服务 CameraService:有关照相和摄像的重要服务 同时,分析MediaServer对于理解Android中的IPC机制能够提供较好的帮助.Android系统基本上可以看做是一个基于Binder机制的C/S架构,对于Binder机制的理解相对比较复杂,

深入理解Android(2)__深入理解JNI

前言:前面一贴,我们大概了解了Android系统的架构,对于每个层次的东东也有了基本的了解,那么我们就可以正式动工,开始逐个突破,攻克每一个难点,你有没有很激动?OK,下面我们就拿JNI来练练手. JNI:Java NativeInterface(Java本地调用),说的简单点,JNI就是一种技术,它是干什么的?主要有两点: (1)Java程序中的函数可以调用Native语言写的函数,Native一般就是指C/C++编写的函数: (2)Native程序中的函数可以调用Java层的函数. 看到这个

[深入理解Android卷一 全文-第二章]深入理解JNI

由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容. (出版社排版好的PDF版正在向出版社申请,到时候会通过CSDN下载资源发布) 第2章  深入理解JNI 本章主要内容 ·  通过一个实例,介绍JNI技术和在使用中应注意的问题. 本章涉及的源代码文件名及位置 下面是本章分析的源码文件名及其位置. ·  MediaScanner.java framework/b

[深入理解Android卷一全文-第十章]深入理解MediaScanner

由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在OSC博客中全文转发这两本书的全部内容. 第10章 深入理解MediaScanner 本章主要内容 ·  介绍多媒体系统中媒体文件扫描的工作原理. 本章涉及的源代码文件名及位置 下面是本章分析的源码文件名及其位置. ·  MediaProvider.java packages/providers/MediaProvider/MediaProvider.