??Zany完成了對(duì)播放進(jìn)度、狀態(tài)的監(jiān)聽(tīng),包括了播放完成后的回調(diào),大幅減少代碼量
大家要是有關(guān)于播放器的問(wèn)題可以找我,一起討論哇哈哈哈哈哈??
Email Yvente@163.com
創(chuàng)建一個(gè)Zany實(shí)例
let player = Zany(url: url)
創(chuàng)建一個(gè)帶有播放進(jìn)度的Zany實(shí)例
let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
// DispatchQueue.main
// update UI about progress
})
操作這個(gè)實(shí)例
你可以創(chuàng)建一個(gè)Zany實(shí)例作為播放器,在需要播放的時(shí)候調(diào)用 'play()' 方法
let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
// DispatchQueue.main
// update UI about progress
})
player.play()
功能包括:
-
play(): 播放一個(gè)已經(jīng)暫停的播放器 -
pause(): 暫停一個(gè)正在播放的播放器 -
reset(_ url: URL?, restart: Bool = true): 重置播放器,替換URL
屬性:
-
.id: 播放器的唯一標(biāo)識(shí) -
.state: 播放器狀態(tài) (paused,running,finished)
添加/移除 觀察者
你可以為Zany實(shí)例添加進(jìn)度觀察者(單獨(dú)添加的要記得移除,初始化默認(rèn)添加,已經(jīng)在銷(xiāo)毀前作了移除):
let token = player.observe { (zany, progress) -> (Void) in
// DispatchQueue.main
// update UI about progress
}
player.play()
你可以通過(guò)token移除對(duì)應(yīng)觀察者:
player.remove(observer: token)
監(jiān)聽(tīng)播放狀態(tài)的改變
您可以通過(guò)分配一個(gè)函數(shù)回調(diào)來(lái)監(jiān)聽(tīng)狀態(tài)更改 - 'onstatechange' 屬性
newState為finished時(shí)表示播放完成,再也不用到處寫(xiě)播放完成的通知了??
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")
}
是不是很方便??
就想要???? 歡迎戳這里 ????
發(fā)現(xiàn)bug或好的建議歡迎 issues or Email Yvente@163.com??????