ZJX_ZFPlayer 3.2.6

ZJX_ZFPlayer 3.2.6

周佳兴 维护。



ZFPlayer

中文说明

在此之前,您使用过 ZFPlayer,是否担忧封装 avplayer,而不是使用或修改源代码来支持其他播放器,控制层难以自定义等问题?为了解决这些问题,我编写了这个播放器模板,对于播放器 SDK,您可以遵守 ZFPlayerMediaPlayback 协议,对于控制视图,您可以遵守 ZFPlayerMediaControl 协议,可以自定义播放器和控制视图。

在 3.X 之前,是不是在苦恼播放器 SDK 自定义、控制层自定义等问题。作者公司多个项目分别使用不同的播放器 SDK 以及每个项目的控制层都不一样,但是为了统一管理、统一调用,我特意写了这个播放器壳子。播放器 SDK 只需遵守 ZFPlayerMediaPlayback 协议,控制层只需遵守 ZFPlayerMediaControl 协议,完全可以实现自定义播放器和控制层。

ZFPlayer.png

要求

  • iOS 7+
  • Xcode 8+

安装

ZFPlayer 通过 CocoaPods 提供。要安装它,使用播放器模板只需在 Podfile 中添加以下行:只有 Core 文件夹下的代码,使用 AVPlayer、IJK、KSY 都需要 pod 单独模块,或者使用自定义播放器管理类,如有定制功能需求,请单独联系作者。

pod 'ZFPlayer', '~> 3.0'

使用默认控制视图,只需在 Podfile 中添加以下行:

pod 'ZFPlayer/ControlView', '~> 3.0'

使用 AVPlayer,只需在 Podfile 中添加以下行:

pod 'ZFPlayer/AVPlayer', '~> 3.0'

如果使用 AVPlayer 边下边播,可以参考使用 KTVHTTPCache

使用 ijkplayer,只需在 Podfile 中添加以下行:

pod 'ZFPlayer/ijkplayer', '~> 3.0'

IJKMediaFramework SDK 支持 Cocoapods

使用 KSYMediaPlayer,只需在 Podfile 中添加以下行:

pod 'ZFPlayer/KSYMediaPlayer', '~> 3.0'

KSYMediaPlayer SDK 支持 Cocoapods

使用说明

ZFPlayerController

主要类,两个初始化方法,正常模式初始化和列表模式初始化(表格视图,收集)

正常样式初始化

ZFPlayerController *player = [ZFPlayerController playerWithPlayerManager:playerManager containerView:containerView];
ZFPlayerController *player = [[ZFPlayerController alloc] initwithPlayerManager:playerManager containerView:containerView];

列表样式初始化

ZFPlayerController *player = [ZFPlayerController playerWithScrollView:tableView playerManager:playerManager containerViewTag:containerViewTag];
ZFPlayerController *player = [ZFPlayerController alloc] initWithScrollView:tableView playerManager:playerManager containerViewTag:containerViewTag];

ZFPlayerMediaPlayback

对于playerManager,必须遵守ZFPlayerMediaPlayback协议,自定义playerManager可以支持任何播放器SDK,例如AVPlayerMPMoviePlayerControllerijkplayervlcPLPlayerKitKSYMediaPlayer等,您可以参考ZFAVPlayerManager类。

Class<ZFPlayerMediaPlayback> *playerManager = ...;

ZFPlayerMediaControl

此类用于显示控制层,必须遵守ZFPlayerMediaControl协议,您可以使用ZFPlayerControlView类作为参考。

UIView<ZFPlayerMediaControl> *controlView = ...;
player.controlView = controlView;

使用说明

正常样式

/// Your custom playerManager must conform `ZFPlayerMediaPlayback` protocol.
Class<ZFPlayerMediaPlayback> *playerManager = ...;

/// playerController
ZFPlayerController *player = [ZFPlayerController playerWithPlayerManager:playerManager containerView:self.containerView];
player.controlView = controlView<ZFPlayerMediaControl>;
playerManager.assetURL = [NSURL URLWithString:...];

列表样式

/// Your custom playerManager must conform `ZFPlayerMediaPlayback` protocol.
Class<ZFPlayerMediaPlayback> *playerManager = ...;

/// playerController
ZFPlayerController *player = [ZFPlayerController playerWithScrollView:tableView playerManager:playerManager containerViewTag:tag<NSInteger>];
player.controlView = controlView<ZFPlayerMediaControl>;
self.player.assetURLs = array<NSURL *>;

在viewController中旋转视频要实现

- (BOOL)shouldAutorotate {
    return player.shouldAutorotate;
}

图片演示

Picture effect

参考资料

作者

打赏作者

如果ZFPlayer在开发中有帮助到你、如果你需要技术支持或者你需要定制功能,都可以拼命打赏我!

支付.jpg

协议

ZFPlayer可在MIT协议下使用。更多信息请参阅LICENSE文件。

提问

1、demo运行不了?

答:下载后本demo可以直接编译运行,不需要pod installpod install后会出错,因为依赖其他播放器SDK较大,所以默认没有添加进来。如果你想用,那请修改一podspec文件,具体怎么修改自己一查便知,然后再pod install。

2、为啥我podfile这样写pod 'ZFPlayer', '~> 3.0'和demo里不一样,缺少好多类

答:作者秉着插件化的思想来开发此开源库,首先作者的思想是提供一个播放器壳子,关于播放器的核心SDK、还有控制层是完全支持自定义的,所以默认只有Core文件夹下的代码,如果你想使用作者提供的AVPlayer、IJKPlayer等都可单独在podfile写,提供的默认控制层亦是如此,具体看上边readme吧。

3、之前是免费加群,为什么现在要付费加群?

答:之前是免费群每天找作者解决问题的太多了,作者还有自己的工作要干,为了过滤一些伸手党,所以变为付费入群。群内比较活跃,作者、群友都可帮忙解决,如果你有问题都可以加群交流。如果你QQ上没有钱,那你可以扫上边的码,付款大于10元备注写上QQ号,作者看到后会加你然后拉你入群。