renzifeng/ZFPlayer
renzifeng/ZFPlayer has 7,123 GitHub stars and 1,766 forks. Star changes are not measured yet. Last checked 2026-11-08 00:01 UTC. Last push 2024-05-24.
Support customization of any player SDK and control layer(支持定制任何播放器SDK和控制层)
Measured star growth
- in 24h
- Update delayed
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
Before this, you used ZFPlayer, are you worried about encapsulating avplayer instead of using or modifying the source code to support other players, the control layer is not easy to customize, and so on? In order to solve these problems, I have wrote this player template, for player SDK you can conform the ZFPlayerMediaPlayback protocol, for control view you can conform the ZFPlayerMediaControl protocol, can custom the player and control view.

🔨 Requirements
- iOS 7+
- Xcode 8+
📲 Installation
ZFPlayer is available through CocoaPods. To install it,use player template simply add the following line to your Podfile:
pod 'ZFPlayer', '~> 4.0'
Use default controlView simply add the following line to your Podfile:
pod 'ZFPlayer/ControlView', '~> 4.0'
Use AVPlayer simply add the following line to your Podfile:
pod 'ZFPlayer/AVPlayer', '~> 4.0'
Use ijkplayer simply add the following line to your Podfile:
pod 'ZFPlayer/ijkplayer', '~> 4.0'
IJKMediaFramework SDK support cocoapods
🐒 Usage
ZFPlayerController
Main classes,normal style initialization and list style initialization (tableView, collection,scrollView)
Normal style initialization
ZFPlayerController *player = [ZFPlayerController playerWithPlayerManager:playerManager containerView:containerView];
ZFPlayerController *player = [[ZFPlayerController alloc] initwithPlayerManager:playerManager containerView:containerView];
List style initialization
ZFPlayerController *player = [ZFPlayerController playerWithScrollView:tableView playerManager:playerManager containerViewTag:containerViewTag];
ZFPlayerController *player = [ZFPlayerController alloc] initWithScrollView:tableView playerManager:playerManager containerViewTag:containerViewTag];
ZFPlayerController *player = [ZFPlayerController playerWithScrollView:scrollView playerManager:playerManager containerView:containerView];
ZFPlayerController *player = [ZFPlayerController alloc] initWithScrollView:tableView playerManager:playerManager containerView:containerView];
ZFPlayerMediaPlayback
For the playerMnager,you must conform ZFPlayerMediaPlayback protocol,custom playermanager can supports any player SDK,such as AVPlayer,MPMoviePlayerController,ijkplayer,vlc,PLPlayerKit,KSYMediaPlayerand so on,you can reference the ZFAVPlayerManagerclass.
Class<ZFPlayerMediaPlayback> *playerManager = ...;
ZFPlayerMediaControl
This class is used to display the control layer, and you must conform the ZFPlayerMediaControl protocol, you can reference the ZFPlayerControlView class.
UIView<ZFPlayerMediaControl> *controlView = ...;
player.controlView = controlView;
📷 Screenshots

Reference
👨🏻💻 Author
- Weibo: @任子丰
- Email: [email protected]
- QQ群: 123449304
👮🏻 License
ZFPlayer is available under the MIT license. See the LICENSE file for more info.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,056 starspublic-apis/public-apis
A collective list of free APIs
497,294 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
443,463 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,206 stars