A simple video player for iOS, based on AVPlayer. Support the vertical, horizontal screen(lock screen direction). Support adjust volume, brigtness and video progress.
- Support for horizontal and vertical play mode, in horizontal mode can also lock the screen direction
- Support play with online URL and local file
- Support in TableviewCell playing video
- Adjust brightness by slide vertical at left side of screen
- Adjust volume by slide vertical at right side of screen
- Slide horizontal to fast forward and rewind
- Full screen mode to drag the slider control progress, display video preview
- Download
- Toggle video resolution
- iOS 8+
- Xcode 8+
What App using ZFPlayer, and on AppStore, please tell me, help me to statistics.
- Breakpoint Download: ZFDownload
- Layout: Masonry
pod 'ZFPlayer'
Then, run the following command:
$ pod install
Please add the "View controller-based status bar appearance" field in info.plist and change it to NO
Direct drag IB to UIView, the aspect ratio for the 16:9 constraint (priority to 750, lower than the 1000 line), the code section only needs to achieve
self.playerView.videoURL = self.videoURL;
// delegate
self.playerView.delegate = self;
ZFPlayerDelegate
/** backBtn event */
- (void)zf_playerBackAction;
/** downloadBtn event */
- (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);
// Note here, the aspect ratio 16:9 priority is lower than 1000 on the line, because the 4S iPhone aspect ratio is not 16:9
make.height.equalTo(self.playerView.mas_width).multipliedBy(9.0f/16.0f).with.priority(750);
}];
// Control layer(you can custom)
ZFPlayerControlView *controlView = [[ZFPlayerControlView alloc] init];
self.playerView.controlView = controlView;
// Set URL
self.playerView.videoURL = self.videoURL;
// Set delegate
self.playerView.delegate = self;
// Set the fill mode of the video, the default settings (ZFPlayerLayerGravityResizeAspect: wait for a proportional fill, until a dimension reaches the area boundary).
self.playerView.playerLayerGravity = ZFPlayerLayerGravityResizeAspect;
// Default is to close the breakpoint download function, such as the need for this feature set here
self.playerView.hasDownload = YES;
// Play video from XX seconds
self.playerView.seekTime = 15;
// Automatically play the video
[self.playerView autoPlayTheVideo];
// Here is the name of the picture
self.playerView.placeholderImage = [UIImage imageNamed: @"..."];
self.playerView.controlView = your customView;
custom view you need to implement the following method in .m
, you can referenceZFPlayerControlView.m
/**
Show controlView
*/
- (void)zf_playerShowControlView;
/**
Hide controlView
*/
- (void)zf_playerHideControlView;
/**
Reset controlView
*/
- (void)zf_playerResetControlView;
/**
Reset controlView for resolution
*/
- (void)zf_playerResetControlViewForResolution;
/**
Cancel auto fadeOut controlView
*/
- (void)zf_playerCancelAutoFadeOutControlView;
/**
Play end
*/
- (void)zf_playerPlayEnd;
/**
Has download function
*/
- (void)zf_playerHasDownloadFunction:(BOOL)sender;
/**
Resolution function
*/
- (void)zf_playerResolutionArray:(NSArray *)resolutionArray;
/**
PlayBtn state (play or pause)
*/
- (void)zf_playerPlayBtnState:(BOOL)state;
/**
LockBtn state
*/
- (void)zf_playerLockBtnState:(BOOL)state;
/**
DownloadBtn state
*/
- (void)zf_playerDownloadBtnState:(BOOL)state;
/**
Set video title
*/
- (void)zf_playerSetTitle:(NSString *)title;
/**
Player activity
*/
- (void)zf_playerActivity:(BOOL)animated;
/**
Set preview View
*/
- (void)zf_playerDraggedTime:(NSInteger)draggedTime sliderImage:(UIImage *)image;
/**
Dragged to control video progress
@param draggedTime Dragged time for video
@param totalTime Total time for video
@param forawrd Whether fast forward
@param preview Is there a preview
*/
- (void)zf_playerDraggedTime:(NSInteger)draggedTime totalTime:(NSInteger)totalTime isForward:(BOOL)forawrd hasPreview:(BOOL)preview;
/**
Dragged end
*/
- (void)zf_playerDraggedEnd;
/**
Normal play
@param currentTime Current time for video
@param totalTime Total Time for video
@param value Slider value(0.0~1.0)
*/
- (void)zf_playerCurrentTime:(NSInteger)currentTime totalTime:(NSInteger)totalTime sliderValue:(CGFloat)value;
/**
Progress display buffer
*/
- (void)zf_playerSetProgress:(CGFloat)progress;
/**
Video load failure
*/
- (void)zf_playerItemStatusFailed:(NSError *)error;
/**
Bottom shrink play
*/
- (void)zf_playerBottomShrinkPlay;
/**
play on cell
*/
- (void)zf_playerCellPlay;
- 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
See the BMPlayer please, thanks the BMPlayer author's open source.
I recently written ZFZhiHuDaily.
- Weibo: @任子丰
- Email: [email protected]
- QQ Group: 213376937
ZFPlayer is available under the MIT license. See the LICENSE file for more info.