基于AVPlayer,支持竖屏、横屏(横屏可锁定屏幕方向),上下滑动调节音量、屏幕亮度,左右滑动调节播放进度
- 支持横、竖屏切换,在横屏模式下可以锁定屏幕方向
- 支持本地视频、网络视频播放
- 支持在TableviewCell播放视频
- 左侧1/2位置上下滑动调节屏幕亮度(模拟器调不了亮度,请在真机调试)
- 右侧1/2位置上下滑动调节音量(模拟器调不了音量,请在真机调试)
- 左右滑动调节播放进度
- 全屏状态下拖动slider控制进度,显示视频的预览图
- 断点下载功能
- 切换视频分辨率
- iOS 7+
- Xcode 8+
- 断点下载: ZFDownload
- 导航: ZFNavigationController(滑动返回页面时候视频播放不卡顿)
- 布局: Masonry
pod 'ZFPlayer'
Then, run the following command:
$ pod install
请在info.plist中增加"View controller-based status bar appearance"字段,并改为NO
直接拖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;
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秒开始播放视频
playerModel.seekTime = 15;
// 是否自动播放,默认不自动播放
[self.playerView autoPlayTheVideo];
// 设置播放前视频占位图
// 如果网络图片和本地图片同时设置,则忽略本地图片,显示网络图片
ZFPlayerModel *playerModel = [[ZFPlayerModel alloc]init];
// 本地图片
playerModel.placeholderImage = [UIImage imageNamed: @"..."];
// 网络图片
playerModel.placeholderImageURLString = @"https://xxx.jpg";
self.playerView.playerModel = playerModel;
- https://segmentfault.com/a/1190000004054258
- http://sky-weihao.github.io/2015/10/06/Video-streaming-and-caching-in-iOS/
- https://developer.apple.com/library/prerelease/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html#//apple_ref/doc/uid/TP40010188-CH3-SW8
请移步 BMPlayer,感谢 BMPlayer 作者的开源。
- 微博: @任子丰
- 邮箱: zifeng1300@gmail.com
- QQ群:213376937(已满) 213375947(添加这个)
有不错的iOS职位可以联系我,坐标北京,谢谢!!
ZFPlayer is available under the MIT license. See the LICENSE file for more info.