下面介绍苹果重点推荐大家使用的框架类:AVPlayer和AVPlayerViewController
提供iOS四种源生视频播放器框架比较(一)的连接:点击跳转
AVPlayer存在于AVFoundation中,它更加接近于底层,所以灵活性极高。主要用来实现自定义播放器功能,没有控制界面,显示时需要借助AVPlayerLayer来进行显示,该播放器图层继承于CALayer。
代码实现:
//导入头文件
#import<AVFoundation/AVFoundation.h>
// 强引用
@property(nonatomic,strong)AVPlayer * player;
//懒加载
- (AVPlayer *)player
{
if (_player == nil) {
// 加载网络资源
// NSString *urlString = @"http://baobab.wdjcdn.com/14676170652191(23).mp4";
// NSURL *url = [NSURL URLWithString:urlString];
//设置资源文件路径 //可以播放网络资源,
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"minion_01.mp4" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:filePath];
AVAsset *asset = [AVAsset assetWithURL:url];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];
_player = [[AVPlayer alloc] initWithPlayerItem:item];
//注意点:此方法不能使用构造方法,不然不会显示,只会有声音
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player];
[self.view.layer addSublayer:playerLayer];
playerLayer.frame = [UIScreen mainScreen].bounds;
self.layer = playerLayer;
}
return _player;
}
实现播放,暂停,结束功能
- (IBAction)pauseAction:(id)sender {
[self.player pause];
}
- (IBAction)playMovieAction:(id)sender {
[self.player play];
}
- (IBAction)endAction:(id)sender {
//注意此时self.player 一定要释放,不然再次播放无法开启
self.player = nil;
[self.layer removeFromSuperlayer];
//注意释放内存
self.layer = nil;
}
自定义播放器有许多非常好的框架,可以满足我们的开发需要,向大家推荐一篇使用AVPlayer自定义播放器的文章,有开发需要的可以学习一下:链接
下面介绍一下AVPlayerViewController,苹果在iOS8.0推出的集成度非常高,推荐大家使用,下面介绍一下它的优点:自带的播放控制UI, 不需要手动添加,此控制器是视图控制器, 可以弹出, 可以压栈也可以手动调整视图大小, 添加到其他视图上。
实现代码:
# 导入头文件
#import<AVFoundation/AVFoundation.h>
#import<AVKit/AVKit.h>
//注意强引用
@property(nonatomic,strong)AVPlayerViewController * playerVC;
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"minion_01.mp4" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:filePath];
AVPlayer *player = [[AVPlayer alloc] initWithURL:url];
self.playerVC = [[AVPlayerViewController alloc] init];
self.playerVC.player = player;
// 设置缩放模式
self.playerVC.videoGravity = AVLayerVideoGravityResizeAspect;
// 是否显示媒体播放组件
self.playerVC.showsPlaybackControls = YES;
//界面实现时开始播放
[self.playerVC.player play];
//播放方式有两种,任选其中一种即可
//第一种方式:可以选择在本控制器里播放,可以自定义播放器的位置和大小
// self.playerVC.view.frame = CGRectMake(0, 150, self.view.frame.size.width, 300);
// [self addChildViewController:self.playerVC];
// [self.view addSubview:self.playerVC.view];
// 第二种方式:可以模态视频控制器进行播放
[self presentViewController:self.playerVC animated:YES completion:nil];
最后附上四种框架的全部测试demo:https://github.com/conghuasijidan/MoviePlayer.git