一行代码播放视频
封装AVPlayer进行视频播放, 可根据不同需求修改源代码,简单易懂,方便使用
下面进行代码介绍:
我创建了一个UIView的类别, 在类别中创建了一个实例方法
/** 添加视频视图 @param frame 视图大小位置 @param url 视频网络链接 @param block 返回AVPlayer,用于暂停、播放、获取播放进度、调节播放进度 在block中需要主动开启AVPlayer播放 */ -(void)addVideoWithPlayerLayerFrame:(CGRect)frame withPlayerItemUrlString:(NSString *)url complete:(void(^)(AVPlayer *player))block;
因为每一个视图的父类都是UIView,所以在可以在每一个视图对象中都可以使用这一个实例方法(像UIImageView,UITableViewCell等父类都是UIView,所以都可以用这个实例方法)
给它一个frame 和 url 就可以播放视频
我还创建了一个UIView,里面放着有关AVPlayer的控件,我将这个UIView做成了单例,如果需要改变播放界面以外的视图背景图片或背景颜色可以调用单例方法获取这个UIVIew的对象进行操作
使用案例
在info.plist中添加http协议
导入头文件
#import "UIView+addVideoToView.h"
创建一个全局的AVPlayer用来控制视频播放暂停和进度管理
@property(nonatomic,strong)AVPlayer *player;
先初始化一个View
UIView *view = [[UIView alloc]initWithFrame:self.view.frame]; [self.view addSubview:view];
调用实例方法, 并将Block中的AVPlayer指针赋给刚才创建的全局的AVPlayer
[view addVideoWithPlayerLayerFrame:视频大小 withPlayerItemUrlString:@"视频链接" complete:^(AVPlayer *player) { _player = player; }];
视频已经准备完毕,只是还没有开始播放。
AVPlayer简单操作:
// 开始播放 [_player play];
// 暂停视频播放 [_player pause];
// 获取当前视频总时长 CGFloat duration = CMTimeGetSeconds(_player.currentItem.duration); // 获取当前视频当前播放时长 CGFloat current = CMTimeGetSeconds(_player.currentItem.currentTime);
// 调节视频当前的进度 CMTimeMake(播放到多少时间,视频播放的速度比率); CMTime time = CMTimeMake(100, 1); [_player seekToTime:time];
// 调节播放速度比率 [_player setRate:1.0];