У меня возникает очень странная проблема, связанная с AVPlayer, из-за того, что видео останавливается, а время и ход плеера непрерывно перемещаются.
Ранее мой код был в Swift 4, и эта проблема не возникла. не существует в то время. Я обновил код для поддержки swift 5 и в настоящее время использую xcode-11.3, и эта проблема возникает.
Эти журналы получают печать:
- maxSFB long превышает максимально допустимое значение
- Ошибка десериализации информации ICS
- Ошибка декодирования пакетов
пожалуйста, проверьте скриншоты для того же
//Variables
var avPlayerViewController: AVPlayerViewController?
fileprivate var avPlayer: AVPlayer?
weak var delegate: OBVideoPlayerDelegate?
var urlString: String = ""
func setup() {
let resourceLoaderManager = VIResourceLoaderManager()
self.resourceLoaderManager = resourceLoaderManager
playerItem = resourceLoaderManager.playerItem(with: url)
playerItem?.canUseNetworkResourcesForLiveStreamingWhilePaused = true
avPlayer = AVPlayer(playerItem: playerItem)
avPlayerViewController = AVPlayerViewController()
avPlayerViewController?.player = avPlayer
avPlayerViewController?.view.frame = self.bounds
avPlayerViewController?.videoGravity = AVLayerVideoGravity.resizeAspectFill
avPlayerViewController?.addObserver(self, forKeyPath: OBVideoPlayerView.kVideoBoundKey, options: NSKeyValueObservingOptions.new, context: nil)
//Play
self.play()
periodicTimeObserverReference = avPlayer?.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, preferredTimescale: 1), queue: DispatchQueue.main) { (CMTime) -> Void in
self.handlePlayerStatus()
}
NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidFinishPlaying(note:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: avPlayer?.currentItem)
playerItem?.addObserver(self, forKeyPath: "status", options: .init(rawValue: 0), context: nil)
playerItem?.addObserver(self, forKeyPath: "playbackLikelyToKeepUp", options: [.initial, .new], context: nil)
}
//Play video
func play() {
self.delegate?.videoWillStartPlaying?(playerView: self)
avPlayer?.playImmediately(atRate: 1.0)
}
@objc func playAgain() {
avPlayer?.playImmediately(atRate: 1.0)
}
//Pause video
func pause() {
self.delegate?.videoWillPause?()
avPlayer?.pause()
}
Также, пожалуйста, проверьте, что видео застревает в этой видео-ссылке об ошибке: https://drive.google.com/file/d/15Y17GmX4kebE385x0u_2rBqcL4GPhtJF/view?usp=sharing