1

an が終了から 1 秒のときにaCABasicAnimationを anに追加する必要があります(playerItem の期間 - 1)。基本的なクロスフェードです。適切な時間に到着したかどうかを判断する方法がわかりません。以下のコードを使用して、定期的な時間オブザーバーを追加しました。playerItem が終了から 1 秒になったことを知る方法はありますか?AVPlayerLayerAVQueuePlayerplayerItem

timeObserverToken = player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main) { [unowned self] time in

    let fadeOutTime = CMTime(seconds: 1, preferredTimescale: time.timescale)
    let duration = self.currentItem()?.duration
    let convertedDuration = CMTimeConvertScale(duration!, time.timescale, .default)

    if CMTimeCompare(time, CMTimeSubtract(convertedDuration, fadeOutTime)) == 0 {
        self.playerLayer.add(self.fadeOut, forKey: "fadeOut")
    }
}
4

0 に答える 0