详解iOS视频播放方式

2020-01-21 03:12:52于海丽

多媒体这整个系列的文章自己也准备好开始整理了,先从视频音频最简单也是最常用的播放出发慢慢的往下深究,探索到底层的编码解码等等,这篇文章就从视频的播放这个最简单的说起。

iOS的视频播放方式有几种?其实要是只是简单的想播放一段视频并且对UI没什么要求的话的确比较简单,很容易搞定,但我相信这种情况除了你的Demo一般是不会出现的,对播放UI的定义以及可能有各种不同的需求对应着你是不能随便写个播放器就没事了的。

最原始的播放

要不是刚接触iOS开发的同学应该是知道MediaPlayer这个框架的,要是想简单的使用它播放视频,可能几行代码就能搞定了,它里面有一个MPMoviePlayerViewController,利用起来简单的不要不要的。

不过遗憾的是自从iOS 9.0开始,它是被Apple遗弃了的,9.0之后的项目建议用的我们下面再说,你要是有维护9.0之前的项目,可能它你也有必要了解一下,我们也介绍一个它的基本的使用,以及它里面的整个播放的代码逻辑。

工程师以前写过一个三方,KRVideoPlayer 

这个播放器就是基于MediaPlayer框架写的,里面就两个文件,代码也是相当的简单,你直接把它源码下载下来之后我们当一个了解MediaPlayer的Demo简单的说一下。下满是它git上面展示的gif Demo图片:

iOS,视频播放方式

你在看看它源码里面的文件:只有 KRVideoPlayerControlView 和 KRVideoPlayerController 两个,简单分析它们:

1、KRVideoPlayerControlView 继承自 UIView

说白了这个文件写的就是播放器的UI,包括一些播放按钮,进度条,以及全屏切换等等

2、KRVideoPlayerController   集成自 MPMoviePlayerController  

继承之后直接使用MPMoviePlayerController来播放视频,是在它初始化的时候在self.view 上添加 KRVideoPlayerControlView 这个自定义的UI,你可以看到下面的代码:


// 初始化KRVideoPlayerController
- (instancetype)initWithFrame:(CGRect)frame
{
 self = [super init];
 if (self) {
 self.view.frame = frame;
 self.view.backgroundColor = [UIColor blackColor];
 self.controlStyle = MPMovieControlStyleNone;
 [self.view addSubview:self.videoControl];
 self.videoControl.frame = self.view.bounds;
 [self configObserver];
 [self configControlAction];
 }
 return self;
}
// 懒加载KRVideoPlayerControlView
- (KRVideoPlayerControlView *)videoControl
{
 if (!_videoControl) {
 _videoControl = [[KRVideoPlayerControlView alloc] init];
 }
 return _videoControl;
}

 

关于MediaPlayer还有下面的需要你留意一下:

1、关于播放或者暂停等的方法都是在MPMediaPlayback协议里面的