利用Vitamio开发视频播放器(一)

视频播放的实现思想与开发流程


前段时间一直在研究播发器,前前后后弄了几个月,发现了一些不错的开发框架和思想,也发现不少解决和未解决的bug。总之,希望记录下来这几个月的历程。

1.实现思路

首先,我们要拆分模块,这样做的好处有很多,可以便于分析理清思路,开发的时候利于解耦合,便于维护。一个播发器也可以往下细分,比如一个播放器有一个播放界面,用于显示视频,一个媒体控制器,用于控制视频的播放像快进,暂停,截图,声音,亮度等等

Android可以通过MediaPlayer类和SurfaceView来实现,这种方式很灵活。但是系统只支持.3pg和.mp4格式的视频(不确定,肯定支持的不多),所以这时候我引入了第三方的视频播放框架vitamio

Vitamio支大量视频格式以及协议,基本和android视频播放的方法一样所以使用很方便。也支持本地,网络加载视频(目前好像是个人免费,企业收费了)。vitamio为我们封装好了一套播放的Videoview和Mediacontroller,我们可以直接使用,但是这里我们为了更好的深入理解播放器的工作流程,我们自定义自己的播放器框架。使用vitamio有许多注意的事项在后面会介绍。

2.开发流程

大致分为四步:

  1. 自定义一个SurfaceView
  2. 创建播放服务类
  3. 创建MediaController媒体控制器和手势控制器
  4. 创建播放Activity

1.自定义一个SurfaceView

可以想象是一个容器,要播放一个视频,这个视频必须要放在一个容器里播放。为什么要使用SurfaceView做视频容器?

surfaceview的特性是可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。,多用于显示多帧数的图片变换情况,所以游戏开发和视频播放中多用到SurfaceView。

我们也可以通过surfaceview很好的控制视频尺寸和屏幕的适配。

2.创建播放服务类

创建一个服务service用于控制视频播放的状态。

为什么要在service里控制视频的状态?在activity里不是也可以么?
因为service作为后台服务,不容易被系统杀死,在意外退出的情况下,也可以保存视频的一些状态,使得activity里代码不臃肿,实现与MediaPlayer的解耦,便于维护。

3.创建MediaController媒体控制器和手势控制器

通过定义这两个控制器让用户控制视频的状态。实现原理是定义了一个界面和一组按钮,用户通过手势或者按钮传递信息给MediaController,MediaController在调用上面定义的服务去控制MediaPlayer的播放,暂停等等。

4.创建播放Activity

用于绑定播放服务,实现媒体控制器和surface的接口,加载视频,等等,有着视频播放的骨架的作用。

用户与视频交互的大致流程:

用户——>MediaController——>Activity——>PlayService——>MediaPlayer

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值