NicooPlayer
示例
要运行示例项目,请首先克隆仓库,然后从 Example 目录运行 pod install
。
屏幕截图
需求
(适配iOS12 新机型)谢谢。
(新变更:支持M3U8流媒体格式视频播放。播放器在播放正常的.mp4,.m4v等格式视频时,使用resourceLoader缓存器实现断点续传,但.m3u8格式视频不支持此功能。对于m3u8格式的视频,不使用本地缓存器,直接从服务器拉流播放,并且由于流媒体格式不支持拖动进度。)
-
如果整个项目不支持横屏,播放视频时,页面需要横屏,在APPDelegate中导入播放器头文件,并添加方法
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { guard let num = OrientationSupport(rawValue: orientationSupport.rawValue) else { return [.portrait] } return num.getOrientSupports() }
(在实际项目中,如果有做组件化,这里应该通过路由去获取OrientationSupport状态,如果对路由感兴趣,可以查看:https://github.com/yangxina/NicooSwiftRouterDemo Swift路由Demo)
另外,由于播放器对系统状态栏进行了操作,因此需要在主工程的 info.plist 文件中添加:Status bar is initially hidden = YES,并在有播放器的VC中重写 Status bar 样式的方法:
/// 这里重写系统方法,让StatusBar随播放器操作栏一起隐藏或显示,且在全屏播放时,StatusBar样式变为lightContent
override var preferredStatusBarStyle: UIStatusBarStyle {
let orirntation = UIApplication.shared.statusBarOrientation
if orirntation == UIInterfaceOrientation.landscapeLeft || orirntation == UIInterfaceOrientation.landscapeRight
{
return .lightContent
}
return .default
}
/// 1.如果整个项目的状态栏已经是 lightContent,则不需要这些操作,直接播放即可。(具体请查看Demo)
2.点击播放按钮时,调用:
playerView.playVideo("视频链接", "视频名称", fateherView)
3.如果是接着上次播放的点播放,就像其他播放器的记录上次播放,调用 :
playerView.replayVideo("视频链接", "视频名称", fateherView, 上次播放到的时间)
4.在播放途中需要切换到其他地方的播放,例如cell滑出屏幕时需要将播放器显示在小窗播放,可以调用:
playerView.changeVideoContainerView ( fateherView1 ) // 传入需要的父视图
5.播放时,获取播放进度,存入数据库,以便下次进入时,可以直接从上次播放的时间开始播放 :
// 获取播放时间和视频总时长 返回数组, 数组第一个元素为: 播放时间 第二个元素为: 视频总时长
let playTime = playerView.getNowPlayPositionTimeAndVideoDuration()
6.播放本地视频文件
playerView.playLocalVideoInFullscreen(self.videoUrl, videoName, self, sinceTime: sinceTime)
7.另外还需要实现两个代理,具体请查看Demo : ()
let player = NicooPlayerView(frame: self.view.bounds)
player.delegate = self
player.customMuneDelegate = self // 这个是用于自定义右上角按钮的显示
delegate 对应的代理方法 :
func retryToPlayVideo(_ videoModel: NicooVideoModel?, _ fatherView: UIView?)
此方法是在网络加载失败后点击"重试"按钮时调用。
customMuneDelegate对应的代理方法:
func showCustomMuneView() -> UIView?
此方法是全屏播放时右上角按钮点击后调用:返回一个自定义的控件,实现操作自定义。
如果您需要自定义右上角按钮的操作控件:设置 customMuneDelegate,实现方法:
// 自定义覆盖视图,点击右上角菜单按钮时调用。
func showCustomMuneView() -> UIView?
// 自定义右上角的按钮数组,可以自定义操作
func customTopBarActions() -> [UIButton]?
如果您不需要右上角的按钮以及自定义操作控件:不设置 customMuneDelegate 即可。
新增视频播放完成的回调代理:
func currentVideoPlayToEnd(_ videoModel: NicooVideoModel?, _ isPlayingDownLoadFile: Bool) {}
安装
NicooPlayer可通过CocoaPods获取。要安装
它,只需将以下行添加到您的Podfile中
pod 'NicooPlayer'
作者
[email protected], [email protected]
许可证
NicooPlayer采用MIT许可证。有关更多信息,请参阅LICENSE文件。