ZonPlayer 1.0.1

ZonPlayer 1.0.1

ZeroOnet维护。



ZonPlayer 1.0.1

ZonPlayer

ZonPlayer 是一个基于 AVPlayer 的播放库,具有缓存和远程控制支持。为了方便起见,我们定义了可以链式调用的接口。

特性

  • 异步配置 AVAudioSession,以防止主线程挂起。
  • 支持 VIMediaCache 等第三方缓存。预设了 ZPC.DownloadThenPlayZPC.Streaming(base on AVAssetResourceLoader)
  • 管理现在播放信息和远程控制命令。
  • 使用插件拦截流播放的进度。
  • 如果播放器出现错误(例如:媒体服务被重置),将自动重试。

使用方法

    let player: ZonPlayable = ZonPlayer.player(URLConvertible)
        .session(ZPSessionable)
        .cache(ZPCacheable) // Conform ZPCacheable to customize cache category.
        .remoteControl(self) { wlf, payload in // Conform ZPRemoteControllable to customize background playback controller.
            payload.title(String).artist(String)....
        }
        .onPaused(self) { wlf, payload in // Conform ZPObservable to listen player.
        }
        .activate(in: ZonPlayerView)

    // Conform ZPControllable to control player instance.
    player.pause()
    player.play()
    player.seek(to: 0)
    // ...

    // Conform ZPGettable to read player status.
    player.currentTime
    player.duration
    player.url
    // ...

集成第三方缓存

import VIMediaCache

final class TestCache: ZPCacheable {
    let manager = VIResourceLoaderManager()

    func prepare(url: URL, completion: @escaping (Result<AVURLAsset, ZonPlayer.Error>) -> Void) {
        let item = manager.playerItem(with: url).unsafelyUnwrapped
        let asset = (item.asset as? AVURLAsset).unsafelyUnwrapped
        completion(.success(asset))
    }
}

func play() {
    let player = ZonPlayer.player(url).cache(TestCache())
}

注意:在使用 ZPC.Streaming 之前,建议确保 URL 支持随机访问,以避免潜在的不意外问题。以下是对 isByteRangeAccessSupported 的官方文档说明:

如果此属性对于必须增量加载的资源不为真,加载资源可能会失败。此类资源包括包含媒体数据的任何内容。

要求

  • iOS 12.0 或更高版本
  • Swift 5.0 或更高版本

安装

CocoaPods

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '12.0'
use_frameworks!

target 'MyApp' do
  pod 'ZonPlayer', '~> 1.0.0'
end

Carthage

github "ZeroOnet/ZonPlayer" ~> 1.0.0

Swift 包管理器

  • 文件 > Swift 包 > 添加包依赖
  • 添加 [email protected]:ZeroOnet/ZonPlayer.git
  • 选择 "Up to Next Major" 并将其设置为 "1.0.0"。

作者

ZeroOnet, [email protected]

博客

从头开始编写一个播放器 I —— ZonPlayer 需求分析和接口设计
从头开始编写一个播放器 II —— 音频会话、远程控制和播放器实现
从头开始编写一个播放器 III —— 缓存
从头开始编写一个播放器 IV(终)—— Github Action 与组件发布

参考

Alamofire
Kingfisher
VIMediaCache

许可

ZonPlayer 可在 MIT 许可下使用。有关更多信息,请见 LICENSE 文件。