在初始化 AvPlayer 时,可以使用 KVO 观察 "currentItem" 属性,并在属性更改时添加和删除 Observer。这样,当您更改 AvPlayer 的项目时,您的 Observer 也会相应地更改。
示例代码:
class ViewController: UIViewController { var player: AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
// Initialize player with first item
let url = URL(string: "https://example.com/video1.mp4")!
player = AVPlayer(url: url)
// Add observer for currentItem
player.addObserver(self, forKeyPath: "currentItem", options: [.new, .initial], context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "currentItem" {
// Your code here
}
}
deinit {
// Remove observer
player.removeObserver(self, forKeyPath: "currentItem")
}
func playNextItem() {
// Change to next item
let url = URL(string: "https://example.com/video2.mp4")!
let item = AVPlayerItem(url: url)
player.replaceCurrentItem(with: item)
}
}