KJPlayer 2.1.12

KJPlayer 2.1.12

77 维护。



KJPlayer 2.1.12

KJPlayer

🎸- 好消息,音视频播放器迎来了翻天覆地的重大改版!

English | 简体中文

功能介绍

动态切换内核,支持边下边播的播放器方案

  • 支持音/视频播放,midi 文件播放
  • 支持在线播放/本地播放
  • 支持后台播放,音频提取播放
  • 支持视频边下边播,分片下载播放存储
  • 支持断点续载续播,下次直接优先从缓冲读取播放
  • 支持缓存管理,清除时间段缓存
  • 支持试看,自动跳过片头片尾
  • 支持记录上次播放时间
  • 支持自动播放,自动连续播放
  • 支持随机/重复/顺序播放
  • 支持重力感应,全屏/半屏切换
  • 支持基本手势操作,进度音量等
  • 支持锁定屏幕
  • 长按快进快退等操作
  • 支持倍速播放
  • 支持切换不同分辨率视频
  • 支持直播流媒体播放
  • 持续更新中...

视频支持格式:mp4、m3u8、wav、avi
音频支持格式:midi、mp3、


效果图

免费试看功能

  • 此功能类似于vip会员观看性质,充值后继续播放观看模式
// MARK: - KJPlayerFreeDelegate
extension DetailsViewController: KJPlayerFreeDelegate {

    /// 获取免费试看时间
    /// - Parameter player: 播放器内核
    /// - Returns: 试看时间,返回零不限制
    func kj_freeLookTime(with player: KJBasePlayer) -> TimeInterval {
        return 50
    }
    
    /// 试看结束响应
    /// - Parameters:
    ///   - player: 播放器内核
    ///   - currentTime: 当前播放时间
    func kj_freeLookTime(with player: KJBasePlayer, currentTime: TimeInterval) {
        
    }
}
  • 充值后恢复观看权限
self.player.kj_closeFreeLookTimeLimit()

CocoaPods 安装尝试观看模块

pod 'KJPlayer/FreeTime' # vip尝试观看功能

跳过片头片尾功能

  • 该功能非常明确,类似于在观看视频时跳过片头和片尾的功能
// MARK: - KJPlayerSkipDelegate
extension DetailsViewController: KJPlayerSkipDelegate {

    /// 跳过片头
    /// - Parameter player: 内核
    /// - Returns: 需要跳过的时间
    func kj_skipOpeningTime(with player: KJBasePlayer) -> TimeInterval {
        return 18
    }
    
    /// 跳过片头响应
    /// - Parameters:
    ///   - player: 内核
    ///   - openingTime: 跳过播放时间
    func kj_skipOpeningTime(with player: KJBasePlayer, openingTime: TimeInterval) {
        self.backview.hintTextLayer.kj_displayHintText("跳过片头,自动播放",
                                                       time: 5,
                                                       position: KJPlayerHintPositionBottom)
    }
}

CocoaPods安装跳过片头片尾模块

pod 'KJPlayer/SkipTime' # vip跳过片头片尾功能

记忆播放功能

  • 该功能将自动记住上次播放的时间,下次播放将直接无缝地继续播放
// MARK: - KJPlayerRecordDelegate
extension DetailsViewController: KJPlayerRecordDelegate {

    /// 获取是否需要记录响应
    /// - Parameter player: 播放器内核
    /// - Returns: 是否需要记忆播放
    func kj_recordTime(with player: KJBasePlayer) -> Bool {
        return true
    }
    
    /// 获取到上次播放时间响应
    /// - Parameters:
    ///   - player: 播放器内核
    ///   - lastTime: 上次播放时间
    func kj_recordTime(with player: KJBasePlayer, lastTime: TimeInterval) {
        
    }
}
  • 主动选择存储记忆
self.player.kj_saveRecordLastTime()

CocoaPods安装自动记忆播放模块

pod 'KJPlayer/RecordTime' # vip自动记忆播放功能

备注提示:该功能比跳过片头功能更高级,简而言之,该功能实现后,下次将从上次播放的位置直接开始观看


其余功能模块

1.播放器模块

  • midi内核:pod 'KJPlayer/MIDI'
  • ijk内核:pod 'KJPlayer/IJKPlayer'
  • av内核:pod 'KJPlayer/AVPlayer/AVCore'
  • 自定义UI:pod 'KJPlayer/CustomView'
  • 数据库:pod 'KJPlayer/Database'

2.功能区域模块

  • AVPlayer内核扩展功能

    • 边下边播边存分支:pod 'KJPlayer/AVPlayer/AVDownloader'
  • 记忆播放:pod 'KJPlayer/RecordTime'

  • 尝鲜播放:pod 'KJPlayer/FreeTime'

  • 跳过片头片尾:pod 'KJPlayer/SkipTime'

  • 缓存板块:pod 'KJPlayer/Cache'

  • 视频截屏板块:pod 'KJPlayer/Screenshots'

  • 切换内核:pod 'KJPlayer/DynamicSource'

    • 目前支持3种内核:AVPlayer内核、MIDI内核、IJKPlayer内核

大致流程就是这样,Demo也写得非常详细,可以自行查看🎷

KJPlayerDemo

总结:先完善基本框架,之后逐步补充其他内核。如若觉得有帮助,请帮忙点个赞,有任何问题或需求也可以提交Issues

关于作者

救救孩子吧,谢谢各位大佬。

🥺