- 1
- 0
- 约9.99千字
- 约 9页
- 2017-01-05 发布于湖北
- 举报
iOS中视频播放器的简单封装详解
iOS中视频播放器的简单封装详解
要实现封装视频播放器,首先需要实现视频播放器,然后再去考虑怎样封装可以让以后自己使用起来方便快捷。iOS9之前可以使用MediaPlayer来进行视频的播放,iOS9之后系统推荐使用AVFoundation框架实现视频的播放。下面通过本文来看看详细的介绍吧。
前言
如果仅仅是播放视频两者的使用都非常简单,但是相比MediaPlayer,AVPlayer对于视频播放的可控制性更强一些,可以通过自定义的一些控件来实现视频的播放暂停等等。因此这里使用AVPlayer的视频播放。
视频播放器布局
首先使用xib创建CLAVPlayerView继承UIView用来承载播放器,这样我们在外部使用的时候,直接在控制器View或者Cell上添加CLAVPlayerView即可,至于播放器播放或者暂停等操作交给CLAVPlayerView来管理。下面来看一下CLAVPlayerView的结构。
CLAVPlayerView的结构
CLAVPlayerView的布局很简单,重点在于约束的添加和控件层次关系,添加约束只要自己挨个细心添加就没有问题,需要注意控件的层次关系,从上图中可以看出四个控件是分先后顺序平行添加在CLAVPlayerView上的,要注意他们的层次关系,避免相互遮挡。
视频播放器实现
布局完成之后,就是实现播放器功能,我们把播放器功能大致分为四部分来完成
一. 通过播放按钮实现视频播放。
首先CLAVPlayerView加载时需要将播放器layer添加到imageView的layer上,此时蒙版和底部工具条一定都是隐藏的,点击中间播放按钮,视频开始播放并隐藏播放按钮。因此我们需要在CLAVPlayerView的awakeFromNib方法中,在加载CLAVPlayerView时对其做一些处理。
1、初始化AVPlayer和AVPlayerLayer,并将AVPlayerLayer添加到imageView的layer上,在layoutSubviews中设置playerLayer的frame
// 初始化player 和playerLayer
self.player = [[AVPlayer alloc]init];
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
// imageView上添加playerLayer
[self.imageView.layer addSublayer:self.playerLayer];
-(void)layoutSubviews
{
[super layoutSubviews];
self.playerLayer.frame = self.imageView.bounds;
}
2、根据播放视频的url创建AVPlayerItem
NSURL *url = [NSURL URLWithString:@86:32812/resources/videos/minion_02.mp4];
self.playerItem = [AVPlayerItem playerItemWithURL:url];
3、设置Slider原点以及最大点最小点图片
// 设置Slider
[gressSlider setThumbImage:[UIImage imageNamed:@thumbImage] forState:UIControlStateNormal];
[gressSlider setMaximumTrackImage:[UIImage imageNamed:@MaximumTrackImage] forState:UIControlStateNormal];
[gressSlider setMinimumTrackImage:[UIImage imageNamed:@MinimumTrackImage] forState:UIControlStateNormal];
4、给imageView添加tap手势,点击imageView则显示工具栏
//imageView添加手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
[self.imageView addGestureRecognizer:tap];
注意:如果使用xib给imageVIew添加手势,则通过loadNibNamed加载xib的时候需要获取返回数组的firstObject,得到的才是xib的View,如果获取lastObject,得到是的tap
您可能关注的文档
- InDesign 版式设计.ppt
- informatica零基础教程.doc
- Intel Core i7-4790 CPU与Intel Xoen E3-1231 v3 CPU对比测试.doc
- iOS开发基础.pptx
- iOS最新面试题及答案(7.29).docx
- IP0财务核查实践与思考 李太华.pptx
- IPMP-C级案例.doc
- 部编版人教版初一七年级语文下册《小壁虎借尾巴》名师课件.pptx
- 部编版人教版初一七年级语文下册《陋室铭》赛教课件.ppt
- 部编版五年级语文上册《珍珠鸟》教学课件.ppt
- 部编版人教版一年级语文下册《识字:古对今》赛教课件.pptx
- 新编人教部编版二年级下册语文《我是一只小虫子》名师教学课件.pptx
- 最新人教部编版九年级语文上册《精神的三间小屋》精品课件.ppt
- 全优指导高中数学人教A版选修2-1课件:3.2.1利用向量证明空间中的平行关系.ppt
- 最新人教部编版小学语文一年级下册《动物儿歌》教学设计.docx
- 最新人教部编版四年级语文上册《风筝》精品课件.ppt
- 北师大版数学六年级下册《数的运算》课件.ppt
- 部编版人教版初一七年级语文下册《老王》名师课件.ppt
- 部编版人教版初一七年级语文下册《将军百战死-壮士十年归——“互文”修辞手法》名师课件.pptx
- 部编版三年级语文下册《童年的水墨画》教学课件.pptx
原创力文档

文档评论(0)