当播放器速率增加时 AVPictureInPictureController 在 AVPlayerItemDidPlayToEndTimeNotification 中导致问题

问题描述

我一直在与 AVPlayerItemDidplayToEndTimeNotification 合作。每次都被调用。但是,如果我将播放器的速率更改为 8x,它只会为第一个视频提供回调。当第二个视频完成时,块没有被调用,当我再次强制播放相同的视频时,它会给出相同的回调。

相关代码如下:

func play(url: String,identifier: String? = nil) {
    guard let url    = URL(string: url) else { return }
    self.identifier  = identifier
    let assets       = AVAsset(url: url)
    let item         = AVPlayerItem(asset: assets)
    item.audioTimePitchAlgorithm = .varispeed
    self.player.replaceCurrentItem(with: item)
    self.player.play()

    NotificationCenter.default.addobserver(forName: .AVPlayerItemDidplayToEndTime,object: self.player.currentItem,queue: OperationQueue.main) { [weak self] (notif) in
        guard let `self` = self else { return }
        self.playerDidFinishPlaying(notif)
    }
}

我也尝试在 object 参数中传递 nil。但什么也没发生。 我也试过选择器而不是块。还是一样的问题。

如果我遗漏了任何细节,请告诉我。

更新

这背后的原因是 PIP。如果我删除 AVPictureInPictureController 则一切正常。但我必须使用 PIP。我该如何解决

画中画代码

self.pictureInPictureController = AVPictureInPictureController(playerLayer: self.videoLayerView.playerLayer)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)