当子类化 AVPlayer 时,有没有比使用通知中心更直接的方法来知道播放器项目何时结束?

问题描述 投票:0回答:1

使用时

AVPlayer
,

我知道检测视频是否已结束的唯一方法,

是使用通知,就像从视图控制器检测视频结束时一样。例如,

class FancyAVPlayer: AVQueuePlayer {
    
    override init() {
        super.init()
        NotificationCenter.default.addObserver(self,
           selector: #selector(innerEnd),
           name: .AVPlayerItemDidPlayToEndTime, object: nil)
    }
    
    @objc func innerEnd() {
        print("AVPlayer subclass, tape ended")
    }

    override func insert ..etc
    override func remove ..etc
}

我一直想知道,必须有一种更明智的方法来做到这一点,通过覆盖 AVPlayer 中的某些内容。

有人解决这个问题了吗?

ios swift avplayer tvos
1个回答
0
投票

不幸的是,没有。

AVFoundation
中,通知
AVPlayerItemDidPlayToEndTime
确实是检测视频播放何时结束的常见且推荐的方法。

API 不直接支持在不使用键值观察 (KVO) 或通知的情况下重写

AVPlayer
AVQueuePlayer
中的方法来检测播放结束。

© www.soinside.com 2019 - 2024. All rights reserved.