NicooPlayer 1.3.6

NicooPlayer 1.3.6

YangXin 维护。



NicooPlayer

CI Status Version License Platform

示例

要运行示例项目,请首先克隆仓库,然后从 Example 目录运行 pod install

屏幕截图

需求

(适配iOS12 新机型)谢谢。

(新变更:支持M3U8流媒体格式视频播放。播放器在播放正常的.mp4,.m4v等格式视频时,使用resourceLoader缓存器实现断点续传,但.m3u8格式视频不支持此功能。对于m3u8格式的视频,不使用本地缓存器,直接从服务器拉流播放,并且由于流媒体格式不支持拖动进度。)

  1. 如果整个项目不支持横屏,播放视频时,页面需要横屏,在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文件。