毕业设计(论文)-基于Android手机操作系统的音频播放器.doc

上传人:李主任 文档编号:3282583 上传时间:2019-08-07 格式:DOC 页数:50 大小:748.52KB
返回 下载 相关 举报
毕业设计(论文)-基于Android手机操作系统的音频播放器.doc_第1页
第1页 / 共50页
毕业设计(论文)-基于Android手机操作系统的音频播放器.doc_第2页
第2页 / 共50页
毕业设计(论文)-基于Android手机操作系统的音频播放器.doc_第3页
第3页 / 共50页
毕业设计(论文)-基于Android手机操作系统的音频播放器.doc_第4页
第4页 / 共50页
毕业设计(论文)-基于Android手机操作系统的音频播放器.doc_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《毕业设计(论文)-基于Android手机操作系统的音频播放器.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于Android手机操作系统的音频播放器.doc(50页珍藏版)》请在三一文库上搜索。

1、保密类别 编 号20070803030 XX大学XX学院毕 业 论 文基于Android手机操作系统的音频播放器系 别 计算机科学系专 业 计算机科学与技术年 级 学 号 姓 名 指导教师 XX大学XX学院2011年05月19日摘 要3G牌照在国内发放后3G、Android、iPhone、Google、苹果、手机软件、移动开发等词越来越多充斥于耳。随着3G网络大规模建设和智能手机迅速普及,移动互联网时代已经悄然而至。在Google及其开放手机联盟推出基于Linux平台的开源手机操作系统Android之后,Google有不惜重金举办了Android开发者大赛,吸引了众多开发者的目光,Androi

2、d不仅功能强大,而且具有开放和免费的先天优势。随着Android手机的普及,Android应用的需求势必会越来越大,这将是一个潜力巨大的市场,会吸引无数开发者投身其中。纵观Google对Android的历次更新行动,我们不难看出,每一个版本的Android在多媒体方面都会进行比较明显的改动,目的就是为了能更好地满足用户对于多媒体功能的需求。本文主要围绕以下几个方面进行讨论研究:1. 开发平台的介绍,本文的开发平台是由Google提供的SDK和Eclipse发环境构成,Android的图形界面部分全部是由Java实现的,Android的Java虚拟机是由Google为嵌入式设备量身定做的,底层的

3、库函数由C/C+语言实现。2. 介绍了Android音频解码播放原理,结合具体的功能,对Android多媒体开发核心OpenCore以及多媒体类库MediaPlayer进行综合论述。关键词:Android Eclipse OpenCoreMediaPlaye 手机软件开发Audio Players Based on the Android Mobile Operating SystemABSTRACTAfter the 3G license was issued, such words as 3G, Android, iPhone, Google, Apple, mobile software

4、, mobile development are flooding into the market. As the 3G networks large-scale construction and smart phones rapidly growing popularization, mobile Internet era has been just around the corner. After Google and its Open Handset Alliance having launched Android, the open-source mobile operating sy

5、stem based on the Linux platform, Google had spared no expense to hold the Android developer contest which attracted large numbers of developers eyes. Apart from its multifunctional trait, it presents established advantages of being open and free to the public. With the popularization of Android pho

6、nes, the demand for Android application will be growing and there inevitably is a huge potential market which will attract countless developers to join in.Throughout all previous Googles actions about updating Android, we can easily see that each version of Android always has some obvious adaptation

7、s in multimedia systems. And the purpose of doing so is to meet the users demands for multimedia functions. This article mainly discuss on the following several aspects: 1. The introduction of development platformThe development platform of this paper is composed by SDK offered by Google and Eclipse

8、 velopment environment. The graphical interface of Android is implemented by Java whose virtual machine is personalized for embedded devices. Besides, the underlying library function of Android is realized by C/C + language. 2. Introducing the theory of Android audio decoding broadcastIt combines wi

9、th the specific function of Android to conduct a comprehensive exposition about the Open Core and Media Player.Keywords: AndroidEclipseOpenCoreMediaPlayer目 录第1章 绪论11.1课题研究的背景和意义11.2 课题研究内容和目标11.3课题研究的主要工作21.4课题研究的组织结构21.5 本章小结3第2章 Android应用开发平台简介42.1 Android简介42.1.1 系统简介42.1.2 系统架构42.1.3 系统特点62.2 Ec

10、lipse简介72.2.1 IBM-Eclipse语言拓展72.2.2 Eclipse 插件开发环境82.2.3 Eclipse的主要组成82.2.4 Eclipse SDK82.3 Adroid SDK开发环境简介82.3.1 核心包(Core Packages)92.3.2 其他值得注意的包92.4 本章小结9第3章 Android音频解码播放方法103.1 Open Core103.1.1 Open Core综述103.1.2 Open Core库113.1.3 Splitter的定义与初始化123.1.4 当前Splitter的匹配过程133.2 MediaPlayer143.2.1

11、概述143.2.2 整体架构163.3 本章小结18第4章 播放器程序的具体实现194.1 结构概述194.2 源代码分析204.2.1 src文件夹204.2.2 res文件夹244.2.3 AndroidManfest.xml254.3 运行截图264.4 本章小结27结论28参考文献29附录30后记42武汉大学珞珈学院本科毕业论文第1章 绪论3G牌照在国内发放后3G、Android、iPhone、Google、苹果、手机软件、移动开发等词越来越多充斥于耳。移动运营商、终端厂商、浏览器厂商、手机软件制造商也把目光聚集到3G、智能这些新兴技术上。同时,随着3G网络大规模建设和智能手机迅速普及

12、,移动互联网时代已经悄然而至。1.1课题研究的背景和意义Google以及其开放手机联盟推出基于Linux平台的开源手机操作系统Android。Android不仅功能强大,而且具有开放和免费的先天优势,全球范围的电信行业、手机制造商因此毫不犹豫地加入到Android开放手机联盟中来。为Android手机普及和Android应用需求的扩大形成了巨大的契机。Android系统最大的优势在于其开放性和服务免费。Android是一个对第三方软件安全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与与Windows Mobile、Symbian

13、等厂商不同,Android操作系统免费相开发人员提供,这样可以节省近三成的成本。而及早的研究Android平台,既是及时了解到国际上最先进的只能终端操作系统的机会,也是打破欧美移动平台操作系统垄断的大好机会。由于Android是基于Linux内核的,Linux是一个开放的操作系统,Android又是一个开放的平台,使得我们有了更大的自主定制服务的自由。随着科技不断更新和大规模集成电路高速发展,消费者对手机产品在商务和娱乐方面的要求越来越高,而在硬件的推动下,Android系统随之不断更新,用户对手机软件的功能需求不断提高。为满足此种需求手机多媒体技术开发也就不可避免成为热点。多媒体技术中最常见

14、的就是音乐播放技术, Android平台为开发者提供了完整的多媒体音频解决方案,使开发者可以较为方便地开发出相应的音乐播放应用。1.2 课题研究内容和目标Android是基于Linux内的的,不过仅仅在Linux下实现音频播放功能是不够的。它的音频播放功能是依附于Android下的音频系统的,Android下的音频系统的对外接口是AudioSystem接口类,应用程序可以通过此接口访问到音频资源。AudioSystem的实现类是AudioFlinger。本文的主要研究内容就是如何实现音频资源在最新的Android系统当中进行播放。本文主要探讨如何利用开源手机操作系统Android以及其开发环境

15、通过JAVA编程环境设计有效的实现其系统上的音乐播放解决方案。提出层次化的方法和策略来解决某些现有播放器无法实现的功能,并在目录播放、在线播放、后台播放、高清播放等几个方面进行了探索。 1.3课题研究的主要工作Android系统是Google及其开发联盟推出基于Linux平台的开源手机操作系统。Android平台为开发者不仅提供了完整的多媒体解决方案,而且提供了统一、简单、易用的开发接口,让我们可以轻松的开发出一个多媒体播放器。 Android 播放器程序的设计基本任务有以下几点: (1).UI设计 UI就是我们所说的布局文件,UI是一个应用程序的脸面,一个应用程序想要受到用户喜爱,UI不能差

16、。(2).媒体信息管理为了使用户方便地管理曲目,我们将在启动播放器的同时自动获取手机和SD卡上的音频文件,并显示到Listview视图中。(3).播放音乐音乐文件的播放功能是由MediaPlayer类实现的,MediaPlayer提供了常用的接口,比如播放、暂停、停止、快速定位等。1.4课题研究的组织结构本文首先对Android系统开发平台结构体系进行了分析,然后是常见的音频解码技术和基于JAVA的实现的介绍,并简要介绍Android下的用户UI设计的实现方法,最后以AndroidSDK开发平台,对音频播放器进行设计和实现。本论文的结构如下:第1章,绪论,主要介绍本课题研究的背景、意义、内容、

17、目标。第2章,开发平台的介绍,本文的开发平台是由Google提供的SDK和Eclips开发环境构成,Android的图形界面部分全部是由Java实现的,Android的Java虚拟机是由Google为嵌入式设备量身定做的,底层的库函数由C/C+语言实现。第3章,介绍了Android音频解码播放原理,结合具体的功能,对Android多媒体开发核心OpenCore以及多媒体类库MediaPlayer进行综合论述。第4章,音频播放器的具体实现。给出本研究课题的结构概述,源代码分析,以及运行截图。最后给出本论文的结论。1.5 本章小结本章简要说明了本次项目的命题背景、研究意义和主要技术要点。首先,介绍

18、了Android项目开发的技术背景、时代背景和研究背景,紧接着介绍了本次项目所需要用到的核心技术,并对整篇文章的行文结构进行了粗略说明。本章主要阐述的观点是在现行的条件之下Android项目开发的经济及技术可行性是非常之高的,是很有前景的开发项目。3武汉大学珞珈学院本科毕业论文第2章 Android应用开发平台简介在Google及其开放手机联盟推出基于Linux平台的开源手机操作系统Android之后,Google有不惜重金举办了Android开发者大赛,吸引了众多开发者的目光,Android不仅功能强大,而且具有开放和免费的先天优势。随着Android手机的普及,Android应用的需求势必

19、会越来越大,这将是一个潜力巨大的市场,会吸引无数开发者投身其中。2.1 Android简介Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。22.1.1 系统简介Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为Android的公司开发,谷歌在2005年收购Android.Inc后,继续进行对Android系统开发运营,它采用了软件堆层(softw

20、are stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。采用Android系统主要厂商包括美国摩托罗拉(MOTOROLA)、英国索尼爱立信(Sony Ericsson)另外还有中国大陆厂商如:华为、中兴、联想、HTC等。2.1.2 系统架构(1).应用程序Android以Java为编程语言,从接口到功能,都有

21、层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。1View等同于J2ME的Displayable,程序人员可以通过 View 类与“XMLlayout”档将UI放置

22、在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。

23、View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。(2).中介软件操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎

24、。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。1Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。Android 使用skia为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但

25、相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也是Google Chrome 的图形引擎。Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中

26、,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。(3).硬件抽像层Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让Android不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android f

27、ramework 的开发能在不考量驱动程序实现的前提下进行发展。HAL stub是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再callback这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,就可以取得操作函数。(4).编程语言Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,

28、Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到userspace,使得Linux driver 与Linux kernel彻底分开。bionic/libc/kernel/并非标准的kernel header files。Android的kernel header 是利用工具由 Linux ke

29、rnel header 所产生的,这样做是为了保留常数、数据结构与宏。目前Android 的Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android 用来辅助Git工作的一个工具。2.1.3 系统特点(1).开放性在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。

30、显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。5(2).挣脱运营商的束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是

31、运营商口中的笑谈。(3).丰富的硬件选择这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。(4).不受任何限制的开发商Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻挠,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给

32、Android难题之一。(5).无缝结合的Google应用如今叱咤互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。2.2 Eclipse简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。2.2.1 IBM-Eclip

33、se语言拓展Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Ecl

34、ipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。52.2.2 Eclipse 插件开发环

35、境虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workb

36、ench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。2.2.3 Eclipse的主要组成Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件

37、开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。82.2.4 Eclipse SDKEclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclip

38、se项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 GPL发布,第三方组件有各自自身的许可协议。2.3 Adroid SDK开发环境简介Android以Java作为开发语言,JDK是进行Java开发时必须的开发包。Eclipse是一款非常优秀的开源IDE,在大量插件的“配合”下,完全可以满足企业级Java到手机终端Java游戏的开发。Google官方也提供了基于Eclipse的Android开发插件ADT.2.3.1 核心包(Core Packages)这些是基本包在通过Android SDK来编写应用程序,这些包作为原始层,列出的是从最底层到最高层。1

39、0android.util:包含一些列底层辅助类,例如特定的容器类,XML辅助工具类等等。android.os:提供基本的操作服务,消息传递和进程进程间通讯IPC。android.graphics:作为核心渲染包。android.text android.text.method android.text.style android.text.util:提供一套丰富的文本处理工具,支持富文本、输入模式等等。android.database:包含底层API处理数据库。android.content:提供各种服务访问数据在设备上,程序安装到设备和其他的相关资源,以及内容提供展示动态数据。androi

40、d.view:核心用户界面框架。android.widget:提供标准用户界面元素,lists列表 buttons按钮,layout managers布局管理器等等,构建从View包中。android.app:提供高层应用程序模型,实现使用Activities。2.3.2 其他值得注意的包这些包提供附加指定域也行在Android平台,这些必须在基本的应用程序开发。9android.provider:包含定义变量标准内容提供包含在平台中。android.telephony:提供API交互和设备的通话栈。android.webikit:包含一系列API工作在基于web的内容。2.4 本章小结本章主

41、要介绍了Android常用的开发平台Eclipse和AndroidSDK包中的类库。对SDK包中类库的所拥有的功能进行深入的了解对开发出一个好的程序是非常有必要的。同时对开发工具Eclipse的理解能有效地架构开发环境,并能有效地对编写出的代码进行测试。第3章 Android音频解码播放方法纵观Google对Android的历次更新行动,我们不难看出,每一个版本的Android在多媒体方面都会进行比较明显的改动,目的就是为了能更好地满足用户对于多媒体功能的需求。3.1 Open CoreOpenCore是Android的多媒体核心,它是一个基于C+的实现,定义了全功能的操作系统移植层,各种基本

42、的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。所有Android平台的音频、视频的采集以及播放等操作都是通过它来实现的。它也被称为PV(Packet Video),Packet Video是一家专门提供多媒体解决方案的公司。程序员可以同伙Open Core方便快速地开发出想要的多媒体应用程序。63.1.1 Open Core综述OpenCore多媒体框架有一套通用可拓展的借口,针对第三方的多媒体编解码器,输入、输出设备等等。具体功能如下:7l 多媒体文件播放、下载,包括:3GPP,MPEG-4,AAC和MP3 containers。l 流媒体的下载、实时播放,包括:3GPP,HT

43、TP和RTSP/RTP。l 动态视频和静态图像的编码、解码,包括例如:MPEG-4,H263和AVC(H264),JPEG。l 语音编码格式:AMR-NB和AMR-WB。l 音乐编码格式:MP3,AAC,AAC+。l 视频和图像格式:3GPP,MPEG-4和JPEG。l 视频会议:基于H324-M标准。OpenCore是一个多媒体的框架。从宏观上来看,它主要包含了两大方面的内容:l PVPlayer:提供媒体播放器的功能,完成各种音频(Audio)、视频(Video)流的回放(Playback)功能l PVAuthor:提供媒体流记录的功能,完成各种音频(Audio)、视频(Video)流的以

44、及静态图像捕获功能PVPlayer和PVAuthor以SDK的形式提供给开发者,可以在这个SDK之上构建多种应用程序和服务。在移动终端中常常使用的多媒体应用程序,例如媒体播放器、照相机、录像机、录音机等等。为了更好的组织整体的架构,OpenCore在软件层次在宏观上分成几个层次:l OSCL:Operating System Compatibility Library (操作系统兼容库),包含了一些操作系统底层的操作,为了更好地在不同操作系统移植。包含了基本数据类型、配置、字符串工具、IO、错误处理、线程等内容,类似一个基础的C+库。l PVMF:PacketVideo Multimedia

45、Framework(PV多媒体框架),在框架内实现一个文件解析(parser)和组成(composer)、编解码的NODE,也可以继承其通用的接口,在用户层实现一些NODE。l PVPlayer Engine:PVPlayer引擎。l PVAuthor Engine:PVAuthor引擎。事实上,OpenCore中包含的内容非常多:从播放的角度,PVPlayer的输入(Source)是文件或者网络媒体流,输出(Sink)是音频视频的输出设备,其基本功能包含了媒体流控制、文件解析、音频视频流的解码(Decode)等方面的内容。除了从文件中播放媒体文件之外,还包含了与网络相关的RTSP流(Real

46、 Time Stream Protocol,实时流协议)。在媒体流记录的方面,PVAuthor的输入(Source)是照相机、麦克风等设备,输出(Sink)是各种文件,包含了流的同步、音频视频流的编码(Encode)以及文件的写入等功能。在使用OpenCore的SDK的时候,有可能需要在应用程序层实现一个适配器(Adaptor),然后在适配器之上实现具体的功能,对于PVMF的NODE也可以基于通用的接口,在上层实现,以插件的形式使用。3.1.2 Open Core库通过第一章的介绍,可以看出Media Framework处于Libraries这一层,我们知道Library是由CC+来实现的,它

47、们通过Java的JNI方式来调用。Open Core的代码在Android代码的External/Opencore目录中,图3.1展示了OpenCore框架,其子目录及其具体功能描述如下:6l android:这里面是一个上层的库,它实现了一个为Android使用的音视频采集、播放接口,及DRM数字版权管理的接口实现。l baselibs:包含数据结构和线程安全等内容的底层库。l codecs_v2:音视频的编解码器,基于OpenMAX实现。l engines:核心部分多媒体引擎的实现。l exterm_libs_v2:包含了Khronos的OpenMAX的头文件。l fileformats:文件格式的解析(Parser)工具。l nodes:提供一些PVMF的NODE,主要是编解码和文件解析方面的。l oscl:操作系统兼容库。l pvmi:输入输出控制的抽象接口。l protocols:主要是与网络相关的RTSP、RTP、HTTP等协议的相关内容。l pvcommon:pvcommon库文件的Androidmk文件,没有源文件。图3.1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1