0

У меня есть AVPlayerViewController, который я инициализирую с помощью AVPlayer и некоторых AVPlayerItem (iOS 10, Xcode 8, Objective C). AVPlayerViewController представлен «встроенным» внутри некоторого подзапроса, и все отлично работает с собственными элементами управления воспроизведением.AVPlayerViewController останавливается после возвращения из полного экрана

Когда я нажимаю встроенную полноэкранную кнопку, она также работает нормально и переключается в полноэкранный режим (с кнопкой «Готово» в левом верхнем углу).

Моя проблема в том, что я нажимаю кнопку «Готово» для возврата из полноэкранного режима, плеер по какой-то причине перестает играть, сбрасывает себя, и если я проверю .currentItem, я вижу, что это nil.

Что здесь происходит? Почему AVPlayerViewController не поддерживает AVPlayerItem между переключением с/на весь экран?

+1

«Что здесь происходит» Хороший вопрос. Но вы вообще не показывали никакого кода, так кто же знает? Поведение, которое вы описываете, не происходит; например, загрузите и запустите этот пример проекта: https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/bk2ch15p660EmbeddedAVKit Когда вы воспроизводите фильм и расширяетесь до полноэкранного режима и нажмите «Готово», мы останавливаемся, и это все; вы можете возобновить с этого момента. Ничего не «перезагружается». Поэтому _you_ должен делать что-то, что сбрасывает AVPlayer. Но вы не указали, что это такое. – matt

+0

Вы правы, я должен был выложить какой-то код. Я отправляю свое решение с помощью кода – mllm

ответ

0

Использование @ ссылки Мэтта, я увидел, что я сделал разные должен был установить AVPlayerViewController «s player собственность без AVPlayerItem, и только установив его потом (опираясь на replaceCurrentItemWithPlayerItem()

Другими словами -. От мой опыт, вы должны инициализировать как AVPlayerViewController, а также AVPlayer с URL или любой AVPlayerItem и только затем добавить AVPlayerViewController в качестве контроллера зрения ребенка

код для использования без AutoLayout:.

if let playerView = self.playerView { 
    let playerItem = AVPlayerItem(url: self.url) 
    let player = AVPlayer(playerItem: playerItem) 

    let playerVc = AVPlayerViewController() 
    playerVc.player = player 

    self.addChildViewController(playerVc) 
    playerVc.view.frame = playerView.bounds 
    playerView.addSubview(playerVc.view) 
    playerVc.didMove(toParentViewController: self) 

    player.play() 
} 
+1

Здравствуйте, @mllm. Я столкнулся с той же проблемой. Я использую тот же код, что и ваш. Но когда я переключаюсь в полноэкранное видео, поддерживайте режим воспроизведения/паузы в полноэкранном режиме. Но когда я выхожу из полноэкранного режима, он всегда останавливается до такой же продолжительности, когда нажата кнопка выхода. –

Смежные вопросы