Попытка заменить текущий AVPlayerItem другим AVPlayerItem в плеере в режиме PiP.У меня проблема с iOS 11.3 и iOS 11.4.Всякий раз, когда новый элемент проигрывателя создается с новым видео и пытается воспроизвести, Player удаляется.Его странное поведение.Кто-нибудь сталкивался с подобной проблемой?
Принятый подход: 1. Создан просмотр таблицы со списком URL-адресов видео 2. Создан экземпляр AVPlayerViewController () 3. В tableView (_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) пытается заменить AVPlayerItem новым URL-адресом видео.
Прикрепление кода для получения дополнительной информации
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let videoURL = NSURL(string: self.videosListArray[indexPath.row])
if playerViewController.player != nil {
playerViewController.player!.replaceCurrentItem(with: AVPlayerItem (url: videoURL! as URL))
} else {
let player = AVPlayer(url: videoURL! as URL)
playerViewController.player = player
self.present(playerViewController, animated: true){
self.playerViewController.delegate = self
self.playerViewController.player!.play()
}
}
}
//Below implementation is for making the user to select other videos from tableview.
func playerViewControllerWillStartPictureInPicture(_ playerViewController: AVPlayerViewController) {
playerViewController.allowsPictureInPicturePlayback = true
playerViewController.player!.play()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
playerViewController.dismiss(animated: true, completion: nil)
}
}
func playerViewController(_ playerViewController: AVPlayerViewController, restoreUserInterfaceForPictureInPictureStopWithCompletionHandler completionHandler: @escaping (Bool) -> Void) {
let currentViewController = navigationController?.visibleViewController
if currentViewController != playerViewController {
if let topViewController =
navigationController?.topViewController {
topViewController.present(playerViewController,
animated: false, completion: {()
completionHandler(true)
})
}
}
}