iOS中视频播放器的简单封装详解.docVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档