AVPlayer может играть только до 16 видео - PullRequest
0 голосов
/ 26 июня 2018

Я реализовал пейджер, в котором каждая страница показывает пользователю видео.Каждая страница имеет свой экземпляр AVPlayer.Все работает как положено до 17-го видео.

Я много читал по этому вопросу.Похоже, что это ограничение Apple, когда приложение ограничено отображением слоев проигрывателя.

Решение, которое я пробовал (несколько источников утверждают, что оно устраняет проблему), состоит в том, чтобы удалить слой проигрывателя из его родителя и установитьигрок в ноль.Поэтому каждый раз, когда страница исчезает (didDisappear), я звоню:

// player and playerLayer are init at viewWillAppear().
player?.pause()
player = nil
playerLayer?.removeFromSuperlayer()

Это ничего не меняет ... Я все еще ограничен 16 воспроизведением видео.

Таким образом, мой вопрос:

1) Почему это поведение?Действительно ли это ожидается?

2) Как Musical.ly или Snapchat добиваются бесконечного переключения между видео?

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 26 июня 2018

Попробуйте изменить код с помощью

player?.pause()
player?.replaceCurrentItem(with: nil)
playerLayer?.removeFromSuperlayer()
player = nil

, установив элемент nil в проигрыватель, который остановит воспроизведение.

1) Да, это ожидаемое поведение для AVPlayer.Он был разработан для создания видеоплееров или для показа рекламных роликов в играх, но не для видеостен, таких как Instagram или подобные сервисы.

2) Это просто.Они не используют AVPlayer.Для вашей цели вы можете использовать комбинацию AVAssetReader и AVSampleBufferDisplayLayer

...