Zany-灵活的AVPlayer

Zany完成了对播放进度、状态的监听,包括了播放完成后的回调,大幅减少代码量

大家要是有关于播放器的问题可以找我,一起讨论哇哈哈哈哈哈

Email [email protected]

创建一个Zany实例

  let player = Zany(url: url)

创建一个带有播放进度的Zany实例

  let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
    // DispatchQueue.main
    // update UI about progress

  })

操作这个实例

你可以创建一个Zany实例作为播放器,在需要播放的时候调用 'play()' 方法

  let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
    // DispatchQueue.main
    // update UI about progress

  })
  player.play()

功能包括:

  • play(): 播放一个已经暂停的播放器
  • pause(): 暂停一个正在播放的播放器
  • reset(_ url: URL?, restart: Bool = true): 重置播放器,替换URL

属性:

  • .id: 播放器的唯一标识
  • .state: 播放器状态 (paused,running,finished)

添加/移除 观察者

你可以为Zany实例添加进度观察者(单独添加的要记得移除,初始化默认添加,已经在销毁前作了移除):

let token = player.observe { (zany, progress) -> (Void) in
    // DispatchQueue.main
    // update UI about progress
}
player.play()

你可以通过token移除对应观察者:

player.remove(observer: token)

监听播放状态的改变

您可以通过分配一个函数回调来监听状态更改 - 'onstatechange' 属性

newState为finished时表示播放完成,再也不用到处写播放完成的通知了

 player.onStateChanged = {(zany,newState) in
            
      switch newState {
      case .running:
           //  for example: change button state
           //  the player is running
      case .paused:
           //  the player is paused
                
      case .finished:
           //  the player playFinished
            
       }
 }

你甚至可以为 AVPlayerItem 添加Observer

例如:"status","loadedTimeRanges","playbackBufferEmpty","playbackLikelyToKeepUp"

      let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
            print("\(zany.id)---\(progress)")
        }, ItemAddObserver: { (zany, item) -> (Void) in
            // add observer for AVPlayerItem
            
            item.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.new, context: nil)
            
        }) { (zany, item) -> (Void) in
            // remove observer
             item.removeObserver(self, forKeyPath: "status")
        }

是不是很方便

就想要 欢迎戳这里

发现bug或好的建议欢迎 issues or Email [email protected]

你可能感兴趣的:(Zany-灵活的AVPlayer)