问题描述
我一直在与 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 (将#修改为@)