首页 android多媒体分析教程

android多媒体分析教程

举报
开通vip

android多媒体分析教程Android多媒体 Android简介 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。 下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。 Android系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、A...

android多媒体分析教程
Android多媒体 Android简介 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。 下图显示的是Android操作系统的主要组件。每一部分将会在下面具体描述。 Android系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分将详细介绍这5个部分。    架构详解   现在我们拿起手术刀来剖析各个部分[2]。其实这部分SDK文档已经帮我们做得很好了,我们要做的就是拿来主义,然后再加上自己理解。下面自底向上分析各层。 1、Linux Kernel   Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。   如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。   如果你只是做应用开发,就不需要深入了解Linux Kernel层。 2、Android Runtime    Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实 例,运行在他们自己的进程中。Dalvik虚拟机 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 是.dex,dex格式 是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。   大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有 优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。   Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。 3、Libraries   Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:   系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备   媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG   界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层   LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图   SGL——基本的2D图形引擎   3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅   FreeType ——位图和矢量字体渲染   SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎 4、Application Framework   通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。   开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。   所有的应用程序其实是一组服务和系统,包括:   视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 、网格、文本框、按钮,甚至是内嵌的网页浏览器    内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据   资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件   通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告   活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能 5、Applications   Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一 套软件堆叠(Software Stack),或称为「软件叠层架构」,叠层主要分成三层:操作系统、中间件、应用程序。从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献 了自己的一份力量。 多媒体框架 Android-MediaPlayer上层应用程序使用JAVA语言编写,实现逻辑处理;JAVA程序通过调用底层媒体库来实现具体的音视频文件和网络视频播放; JAVA程序通过JNI接口实现对底层媒体库libmedia.so的调用; MediaPlayer在运行的时候,可以大致上分成Client和Server两个部分,它们分别在两个进程中运行,它们之间使用Binder机制实现IPC通讯,图中libmediaplayerservice.so是服务端的实现库。 对于视频文件的播放,MediaPlayer通过调用Opencore提供的功能媒体播放功能来负责实现; 在opencore中负责媒体文件格式解析、音视频数据的解码、以及媒体数据的输出; Opencore通过调用SurfaceFlinger的接口实现视频数据的现实;通过调用AudioFlinger的接口来实现音频数据的回放; Opencore OpenCore 是一个多媒体的框架,从宏观上来看,它主要 包含了两大方面的内容:  PVPlayer : 提供媒体播放器的功能,完成各种音频( Audio ) 、视频( Video )流的回放( Playback )功能  PVAuthor : 提供媒体流记录的功能,完成各种音频( Audio )、 视频( Video )流的捕获( Recording )功能 PVPlayer 和 PVAuthor 以 SDK 的形式提供给开发者,可 以在这个 SDK 之上构建多种应用程序和服务。在移动终端中常 常使用的多媒体应用程序,例如媒体播放器、照相机、录像机 、录音机等等。 OpenCore 是一个多媒体的框架,从宏观上来看,它主要 包含了两大方面的内容:  OSCL ( Operating System Compatibility Library ,操作系统兼容层 )  PVMF ( PacketVideo Multimedia Framework , PV 多媒体框架)  文件解析( parser )和组成( composer )两个部分  编解码部分  NODEs (节点)  Player Engine (播放器引擎)  Author Engine (作者引擎) OSCL ,全称为 Operating System Compatibility Library ( 操作系统兼容库 ) ,它包含了 一些在不同操作系统中移植层的功能,它的在 OpenCore oscl/oscl 目录中,一般每一个目录表示一 个模块。 OSCL 对应的功能是非常细致的,几乎对 C 语 言中每一个细节的功能都进行封装,并使用了 C+ + 的接口提供给上层使用。事实上, OperCore 中的 PVMF 、 Engine 部分都在使用 OSCL ,而整个 OperCore 的调用者也需要使用 OSCL 。 OpenCore 有关文件格式处理和编解码部分两部 分的内容,分别在目录 fileformats 和 codecs_v2 当 中。这两部分都属于基础性的功能,不涉及具体的逻 辑,因此它们被别的模块调用来使用。 文件格式处理有两种类型,一种是 parser (解析器),另一种是 composer (组成器) 。 编解码部分的子目录 omx 实现了一个 khronos OpenMAX 的功能。 OpenMAX 是一个多 媒体应用程序的框架标准 文件格式的处理部分: 由于同时涉及播放文件和记录文件两种功 能,因此 OpenCore 中的文件格式处理有两种类型 ,一种是 parser (解析器),另一种是 composer (组成器)。其代码的目录为 fileformats 的目录,其中包含 mp3 , mp4 , wav 等子目录。 其中包含了 AVI , mp3 , mp4 , wav 等多 种文件的解析器和组成器,各个目录中对应的是不同 的文件格式等。 编解码部分: 编解码部分主要针对 Audio 和 Video 的软件编解码,其 目录为 codecs_v2 ,其中包含了 audio 、 omx 、 utilities 、 video 等几个目录。 在 audio 和 video 目录中,对应了针对各种流的子目 录,其中可能包含 dec 和 enc 两个目录,分别对应解码和编 码。 video |-- avc_h264 | |-- common | |-- dec | |-- enc | `-- patent_disclaimer.txt `-- m4v_h263 |-- dec |-- enc `-- patent_disclaimer.txt codecs_v2 目录的子目录 omx 实现了一个 khronos OpenMAX 的功能。 OpenMAX 是一个多媒体应用程序的框架标准,由 NVIDIA 公司和 Khronos 在 2006 年推出。 OpenMAX IL 1.0 (集成层)技术规格定义了媒体组件接口,以便在嵌入式器件 的流媒体框架中快速集成加速式编解码器。 OpenMAX 的设计实现可以让具有硬件编辑码功能的平台 提供统一的接口和框架,在 OpenMAX 中可以直接使用硬件加 速的进行编解码乃至输出的功能,对外保持统一的接口。 此处的 OpenMAX 则是基于一个纯软件的实现,其实现的代码 即是调用这里的 video 和 audio 目录中的软件编辑码的代码。 Node 是 OpenCore 中基本的功能模块, OpenCore 本身提供了一些 Node ,也可以由 上层软件来实现。本身提供的 Node 在 OpenCore 的 nodes 目录中。 OpenCore 的 Node 主要分成三个类型: 编解码的 Node ,文件格式的 Node ,输入输 出模块的 Node 。 libopencoreplayer.so 中包含了以下内容:  一些解码工具;  文件的解析器( MP4 );  解码工具对应的 Node ;  Player 的引擎部分 (编译文件: engines/player/Android.mk );  为 Android 构建的 Player 适配器 (编译文件: android/Android.mk );  识别工具( pvmi/recognizer );  编解码工具中的 OpenMAX 部分( codecs_v2/omx );  对应插件 Node 的注册。 libopencoreplayer.so 中的内容较多,其中主要为各个文件解析 器和解码器, PVPlayer 的核心功能在 engines/player/Android.mk 当 中;而 android/Android.mk 的内容比较特殊,它是在 PVPlayer 之上 构建的一个为 Android 使用的播放器。 OpenCore 的 Player Engine 具有清晰明确的接口,在这个接口 上,不同的系统可以根据情况实现不同的 Player 。位于 OpenCore 中的 engines/player/ 目录下,其中, engines/player/include 目录 中保存的是接口头文件, engines/player/src 目录中保存是源文件和 私有头文件 。
本文档为【android多媒体分析教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_504654
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:13
分类:互联网
上传时间:2011-03-04
浏览量:20