- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章多媒体开发
第14章 多媒体开发
14.1 概述
Android系统对多媒体开发的支持是比较好的,它本身就提供了MediaPlayer、MediaRecorder等多媒体类,利用这些多媒体类可以很方便地进行开发。
下面先简单介绍一下Android系统的多媒体框架OpenCorePacketVideo):
OpenCore另外一个常用的称呼是PacketVideo,它是Android的多媒体核心。事实上,PacketVideo是一家公司的名称,而OpenCore是这套多媒体框架软件层的名称。对比Android的其程序库,OpenCore的代码非常庞大,它是一个基于C++的实现,定义了全功能的操作系统移植层各种基本的功能均被封装成类的形式各层次之间的接口多使用继承等方式。
OpenCore是一个多媒体的框架从宏观上来看,它主要包含了两大方面的内容:
PVPlayer:提供媒体播放器的功能,完成各种音频Audio)、视频Video)流的回放Playback)功能
PVAuthor:提供媒体流记录的功能,完成各种音频Audio)、视频Video)流及静态图像捕获功能
PVPlayer和PVAuthor以SDK的形式提供给开发者,可以在这个SDK之上构建多种应用程序和服务在移动终端中常常使用的多媒体应用程序媒体播放器、照相机、录像机、录音机等。
为了更好组织整体架构,OpenCore软件在宏观上分成几个层次:
OpenCore框架图
各层次的具体说明如下:
OSCL:Operating System Compatibility Library 操作系统兼容库,包含了操作系统底层的一些操作,更好地在不同操作系统移植。包含了基本数据类型、配置、字符串工具、IO、错误处理、线程等内容,类似一个基础的C++库。
PVMF:PacketVideo Multimedia FrameworkPV多媒体框架,在框架内实现一个文件解析parser)、 组成composer)和编解码的NODE,也可以继承其通用的接口,在用户层实现一些NODE。
PVPlayer Engine:PVPlayer引擎。
PVAuthor Engine:PVAuthor引擎。
事实上,OpenCore中包含的内容非常多从播放的角度,PVPlayer输入是文件或网络媒体流,输出是音频视频的输出设备包含了媒体流控制、文件解析、音频视频流的解码Decode)等基本功能。除了从文件中播放媒体文件之外,还包含了与网络相关的RTSP流Real Time Stream Protocol,实时流协议。在媒体流记录方面,PVAuthor的输入是照相机、麦克风等设备,输出是各种文件,包含了流的同步、音频视频流的编码Encode),以及文件的写入等功能。
在使用OpenCore的SDK时,有可能需要在应用程序层实现一个适配器Adaptor),然后在适配器之上实现具体的功能对于PVMF的NODE也可以基于通用的接口在上层实现,以插件的形式使用。
其实在实际的应用层软件开发中,我们并不用过多地去关心底层是如何实现的,只要对提供的接口函数熟悉就足够了。所以下面几节,我们将针对MediaPlayer、MediaRecorder、Camera这几个类做重点讲述。
14.2.1 MediaPlayer状态详解
首先我们来看一下图14-2。
图1-2 MediaPlayer的生命周期
MediaPlayer的各个状态,也列举了主要方法的调用时序,每种方法只能在一些特定的状态下使用。如果在使用过程中MediaPlayer的状态不正确则会引发IllegalStateException(非法状态异常)异常。下面具体来看看各种状态:
idle 状态:当使用new()方法创建一个MediaPlayer对象或调用其reset()方法时,该MediaPlayer对象就会处于idle状态。这两种方法的一个重要差别就是:如果在这个状态下调用了getDuration()等方法(相当于调用时机不正确),通过reset()方法进入idle状态的话会触发OnErrorListener.onError(),并且MediaPlayer会进入Error状态;不过,如果是新创建的MediaPlayer对象,则并不会触发onError(),也不会进入Error状态。
End 状态:通过release()方法可以进入End状态,只要MediaPlayer对象不再被使用,就应当尽快将其通过release()方法释放掉,以释放相关的软硬件组件资源,这其中有些资源是只有一份的(相当于临界资源)。如果MediaPlayer对象进入了End状态,则不会再进入任何其他状态了。
Initialized 状态:这个状态比较简单,MediaPlayer调用setDataSour
您可能关注的文档
- 空气采样方法--wuyan.ppt-中山大学公共卫生学院.ppt
- 立即发布2012年4月4日新闻稿Digi-Key公司与PacketDigital公司.doc
- 立式磨粉机-破碎机.doc
- 立项书-广东工业大学.doc
- 竞争性磋商邀请公告-长沙市政府采购网.doc
- 离子聚合物-金属复合材料(IPMC).ppt
- 科技成果简介-登录到网站内容管理系统.doc
- 窝沟封闭的定义.ppt
- 章节1CorelDRAW预备知识.ppt.ppt
- 章《大基》-西南林业大学.ppt
- 七章货物的保险.pptx
- 三章国际间接投资.pptx
- 人性假设理论.pptx
- 外研高一英语必修三ModuleIntroduction汇总市公开课获奖课件省名师示范课获奖课件.pptx
- 月相成因优质获奖课件.pptx
- 小学二年级语文课件《狐假虎威》省名师优质课赛课获奖课件市赛课一等奖课件.pptx
- 养羊业概况专题知识讲座.pptx
- 微生物的实验室培养市公开课获奖课件省名师示范课获奖课件.pptx
- 人教版六年级下册式与方程整理与复习市公开课获奖课件省名师示范课获奖课件.pptx
- 必威体育精装版高中精品语文教学:第二单元-第7课-诗三首:涉江采芙蓉、-短歌行、归园田居市公开课获奖课件省名师.pptx
文档评论(0)