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]