title | date | categories | tags | description | |
---|---|---|---|---|---|
一句话实现AVPlayer视频播放 |
2017-05-01 08:28:57 -0700 |
iOS |
|
由于近期项目和视频相关的比较多,而项目中别人封装的不甚满意,所以自己进行了封装,希望有更好的扩展性,同时希望大家多多提取意见,以便于更好的封装。 |
基于AVPlaye封装的视频播放器 、一句话即可实现视频的播放 支持横屏、竖屏,监听屏幕旋转,上下滑动调节音量、屏幕亮度,左右滑动调节播放进度,快进画面预览等
使用说明:
播放器需要传入一view 自动适应view的尺寸 为了简化全屏模式统一使用屏幕旋转的方式进行适配全屏、目前控制层UI未做详细拆分,后期将逐步优化、只为做最简单的视频播放器
- 单利模式
//此次一句话即可实现播放 同时适配横竖屏、竖立的视频
[[NIPlayer sharedPlayer] playWithUrl:_url onView:playView];
//单例需要手动释放
[[NIPlayer sharedPlayer] releasePlayer];
- 普通模式(自动释放内存)
_player = [[NIPlayer alloc] init];
[_player playWithUrl:_url onView:playView];
- 第三方法依赖
布局:Masonry
状态栏旋转需要控制器中重写方法 且需要在info.Plist 添加 View controller-based status bar appearance 设置成No,默认为Yes
- (BOOL)shouldAutorotate {
return NO;
}
//对播放器内部对以下状态做了监听,可以更好的自己处理各种情况
typedef NS_ENUM(NSInteger, NIAVPlayerStatus) {
NIAVPlayerStatusLoading = 0, // 加载视频
NIAVPlayerStatusReadyToPlay, // 准备好播放
NIAVPlayerStatusIsPlaying, // 正在播放
NIAVPlayerStatusIsPaused, // 已经暂停
NIAVPlayerStatusPlayEnd, // 播放结束
NIAVPlayerStatusCacheData, // 缓冲视频
NIAVPlayerStatusCacheEnd, // 缓冲结束
NIAVPlayerStatusPlayStop, // 播放中断 (多是没网)
NIAVPlayerStatusItemFailed, // 视频资源问题
NIAVPlayerStatusEnterBack, // 进入后台
NIAVPlayerStatusBecomeActive, // 从后台返回
};
温馨提示:
1、为了处理视频全屏模式后台进入前台可以平滑的进入(无启动页)对AppDelegate 添加了分类处理 重写了以下方法
//一般状态此处用户无需处理
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (self.allowRotationType == AllowRotationMaskPortrait) {
return UIInterfaceOrientationMaskPortrait;
}else if (self.allowRotationType == AllowRotationMaskAllButUpsideDown) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}else {
return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
}
2、APP支持方向设置为竖屏即可
QQ交流群:518557977
博客地址:http://oxy.pub