Skip to content

Latest commit

 

History

History
322 lines (246 loc) · 8.84 KB

README.zh.md

File metadata and controls

322 lines (246 loc) · 8.84 KB

ZFPlayer

基于AVPlayer,支持竖屏、横屏(横屏可锁定屏幕方向),上下滑动调节音量、屏幕亮度,左右滑动调节播放进度

ZFPlayer剖析  哪些app使用ZFPlayer

特性

  • 支持横、竖屏切换,在横屏模式下可以锁定屏幕方向
  • 支持本地视频、网络视频播放
  • 支持在TableviewCell播放视频
  • 左侧1/2位置上下滑动调节屏幕亮度(模拟器调不了亮度,请在真机调试)
  • 右侧1/2位置上下滑动调节音量(模拟器调不了音量,请在真机调试)
  • 左右滑动调节播放进度
  • 全屏状态下拖动slider控制进度,显示视频的预览图
  • 断点下载功能
  • 切换视频分辨率

要求

  • iOS 7+
  • Xcode 8+

测试版

Test Version 这是一个测试版本,请谨慎使用,还有一些bug,正在继续完善,有需要可以参考。

组件

安装

CocoaPods

pod 'ZFPlayer'

Then, run the following command:

$ pod install

使用 (支持IB和代码)

设置状态栏颜色

请在info.plist中增加"View controller-based status bar appearance"字段,并改为NO

IB用法

直接拖UIView到IB上,View类改为ZFPlayerView

// 初始化控制层view(可自定义)
ZFPlayerControlView *controlView = [[ZFPlayerControlView alloc] init];
// 初始化播放模型
ZFPlayerModel *playerModel = [[ZFPlayerModel alloc] init];
// playerView的父视图
playerModel.fatherView = ...;
playerModel.videoURL = ...
playerModel.title = ...
[self.playerView playerControlView:controlView playerModel:playerModel];
// 设置代理
self.playerView.delegate = self;
// 自动播放
[self.playerView autoPlayTheVideo];

ZFPlayerDelegate

/** 返回按钮事件 */
- (void)zf_playerBackAction;
/** 下载视频 */
- (void)zf_playerDownload:(NSString *)url;
代码实现(Masonry)用法
self.playerView = [[ZFPlayerView alloc] init];
[self.view addSubview:self.playerView];
[self.playerView mas_makeConstraints:^(MASConstraintMaker *make) {
 	make.top.equalTo(self.view).offset(20);
 	make.left.right.equalTo(self.view);
	// 这里宽高比16:9,可以自定义视频宽高比
	make.height.equalTo(self.playerView.mas_width).multipliedBy(9.0f/16.0f);
}];

// 初始化控制层view(可自定义)
ZFPlayerControlView *controlView = [[ZFPlayerControlView alloc] init];
// 初始化播放模型
ZFPlayerModel *playerModel = [[ZFPlayerModel alloc]init];
playerModel.videoURL = ...
playerModel.title = ...
[self.playerView playerControlView:controlView playerModel:playerModel];

// 设置代理
self.playerView.delegate = self;
// 自动播放
[self.playerView autoPlayTheVideo];
设置视频的填充模式
 // 设置视频的填充模式,内部设置默认(ZFPlayerLayerGravityResizeAspect:等比例填充,直到一个维度到达区域边界)
 self.playerView.playerLayerGravity = ZFPlayerLayerGravityResizeAspect;
是否有断点下载功能
 // 下载功能,如需要此功能设置这里
 self.playerView.hasDownload = YES;
从xx秒开始播放视频
// 从xx秒开始播放视频
playerModel.seekTime = 15;
是否自动播放,默认不自动播放
// 是否自动播放,默认不自动播放
[self.playerView autoPlayTheVideo];
设置播放前的占位图
// 设置播放前视频占位图
// 如果网络图片和本地图片同时设置,则忽略本地图片,显示网络图片
ZFPlayerModel *playerModel = [[ZFPlayerModel alloc]init];
// 本地图片
playerModel.placeholderImage = [UIImage imageNamed: @"..."];
// 网络图片
playerModel.placeholderImageURLString = @"https://xxx.jpg";
self.playerView.playerModel = playerModel;
自定义控制层

self.playerView.controlView = 自定义的View;

自定义view你需要实现以下方法,直接在.m中实现即可,可参考ZFPlayerControlView.m

/** 
 * 设置播放模型 
 */
- (void)zf_playerModel:(ZFPlayerModel *)playerModel;

/** 
 * 显示控制层
 */
- (void)zf_playerShowControlView;

/** 
 * 隐藏控制层
 */
- (void)zf_playerHideControlView;

/** 
 * 重置ControlView 
 */
- (void)zf_playerResetControlView;

/** 
 * 切换分辨率时重置ControlView 
 */
- (void)zf_playerResetControlViewForResolution;

/** 
 * 取消自动隐藏控制层view 
 */
- (void)zf_playerCancelAutoFadeOutControlView;

/** 
 * 开始播放(用来隐藏placeholderImageView)
 */
- (void)zf_playerItemPlaying;

/** 
 * 播放完了 
 */
- (void)zf_playerPlayEnd;

/** 
 * 是否有下载功能 
 */
- (void)zf_playerHasDownloadFunction:(BOOL)sender;

/**
 * 是否有切换分辨率功能
 @param resolutionArray 分辨率名称的数组
 */
- (void)zf_playerResolutionArray:(NSArray *)resolutionArray;

/** 
 * 播放按钮状态 (播放、暂停状态)
 */
- (void)zf_playerPlayBtnState:(BOOL)state;

/** 
 * 锁定屏幕方向按钮状态 
 */
- (void)zf_playerLockBtnState:(BOOL)state;

/**
 * 下载按钮状态
 */
- (void)zf_playerDownloadBtnState:(BOOL)state;

/** 
 * 加载的菊花
 */
- (void)zf_playerActivity:(BOOL)animated;

/**
 * 设置预览图

 * @param draggedTime 拖拽的时长
 * @param image       预览图
 */
- (void)zf_playerDraggedTime:(NSInteger)draggedTime sliderImage:(UIImage *)image;

/**
 拖拽快进 快退

 * @param draggedTime 拖拽的时长
 * @param totalTime   视频总时长
 * @param forawrd     是否是快进
 * @param preview     是否有预览图
 */
- (void)zf_playerDraggedTime:(NSInteger)draggedTime totalTime:(NSInteger)totalTime isForward:(BOOL)forawrd hasPreview:(BOOL)preview;

/** 
 * 滑动调整进度结束结束 
 */
- (void)zf_playerDraggedEnd;

/**
 * 正常播放

 * @param currentTime 当前播放时长
 * @param totalTime   视频总时长
 * @param value       slider的value(0.0~1.0)
 */
- (void)zf_playerCurrentTime:(NSInteger)currentTime totalTime:(NSInteger)totalTime sliderValue:(CGFloat)value;

/** 
 * progress显示缓冲进度 
 */
- (void)zf_playerSetProgress:(CGFloat)progress;

/** 
 * 视频加载失败 
 */
- (void)zf_playerItemStatusFailed:(NSError *)error;

/**
 * 小屏播放
 */
- (void)zf_playerBottomShrinkPlay;

/**
 * 在cell播放
 */
- (void)zf_playerCellPlay;

图片效果演示

图片效果演示

声音调节演示

亮度调节演示

快进快退演示

进度调节预览图

参考链接:


Swift版Player:

请移步 BMPlayer,感谢 BMPlayer 作者的开源。


联系我

广告时间

有不错的iOS职位可以联系我,坐标北京,谢谢!!

License

ZFPlayer is available under the MIT license. See the LICENSE file for more info.