视频播放器开发文档分解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
视频播放器开发文档 钱祥森2015.09.17 本文档是在YTV视频播放器的基础上,对播放器的架构进行研究和重构,并设计播放模式,为以后播放器的开发奠定基础。 播放器的架构 播放器通过底层VLC自定义MediaPlayer,与SurfaceView和SurfaceHolder结合实现播放器播放功能,利用接口回调对播放器的状态进行监听和更新数据。 播放器整体可以分为以下几个层次: VLCLibs解码库。解码库提供了视频播放时各种接口。 MediaPlayer。播放器的核心。 界面GUI。通过SurfaceView和SurfaceHolder将MediaPlayer展示出来。 接口定义。通过播放时接口返回的信息进行更新数据。 控件Widget。播放器上的播放,暂停等控件,这些控件对播放器的功能进行完善。 播放器的状态和生命周期 当播放器获取到播放地址后,会对播放器进行初始化,初始化成功后,对播放器添加相应的监听接口,数据加载完毕播放器准备完成后,开始播放。当播放器支持回看时,用户从回看切换到直播或从直播切换到回看时,当前播放器会进行销毁,重新加载数据和创建播放器并对数据进行解析和播放。 播放器播放时的各个状态如图2.1。椭圆代表MediaPlayer对象可能驻留的状态。弧线表示驱动MediaPlayer在各个状态之间迁移的播放控制操作。这里有两种类型的弧线,由一个箭头开始的弧代表同步的方法调用,而以双箭头开头的代表的弧线代表异步方法调用。 图2-1 播放器状态图 通过该图我们可以知道,MediaPlayer有以下几种状态: Idle(空闲)状态和End状态。当一个MediaPlayer对象刚刚被创建或者是调用了reset()方法后,它就处于Idle状态。当调用了release()方法后,它就处于end状态。 Error状态。在某些时候,由于种种原因,如视频格式,分辨率高,流超时等,播放控制操作可能会失效,在这种情况下,错误报告和恢复播放是非常重要的。MedialPlayer提供了OnErrorListener.onError()方法,通过调用setOnErrorListener来注册OnErrorListener。一旦发生错误,MediaPlayer对象就会进入到Error状态。当MediaPlayer对象处于Error状态是,如果想要重用可以通过reset方法将这个对象恢复成Idle状态。 Initialized(已初始化)状态。当MediaPlayer通过setDataSource(String)方法设置播放源时会将处于Idle状态的对象迁移到Initialized状态。 Prepared状态。在开始播放之前MediaPlayer一定会先进入Prepared状态。进入到Prepared状态有两种方法,一是调用prepare()方法(同步),此方法返回就表示MediaPlayer对象已经进入Prepared状态,二是调用prepareAsync()方法(异步),此方法会使此MediaPlayer对象进入Preparing状态并返回,而内部的播放引擎会继续未完成的准备工作。当同步版本返回时或异步版本的准备工作完全完成时会调用OnPreparedListener.onPrepared()方法。可以调用MediaPlayer.setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)方法来注册OnPreparedListener. Started状态。播放器要开始播放,必须要调用start方法。当此方法成功返回时,MediaPlayer对象处于Started状态。可以通过isPlaying方法来MediaPlayer是否处于Started状态。 Paused状态。播放器播放时可以被暂停和调整当前播放的位置。当调用pause()方法并返回时,会使MediaPlayer进入Pause状态。对于一个已处于Pause状态的MediaPlayer对象pause()方法没有影响。 Stopped状态。通过调用stop()方法会停止播放,并且还会让一个处于Started,Pause,Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。对于一个已处于Stopped状态的MediaPlayer对象stop()方法对其没有影响。 PlaybackCompleted状态。当播放到流的,播放就完成了。如果调用了setLooping(boolean)方法开启了循环模式,那么这个MediaPlayer对象就会重新进入Started状

文档评论(0)

ddf55855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档