2016-11-07 6 views
3

У меня есть collectionView, и у каждого cell есть AVPlayer, который предназначен для игры. Таким образом, каждая ячейка одновременно воспроизводит видео. Кажется, что iOS позволяет одновременно воспроизводить 16 видеороликов одновременно. Например, посмотрите пример моего приложения ниже. Из 50 cells только 16 начали воспроизводить видео. Это число всегда остается неизменным. Это происходит на iPhone 6s с iOS 10. В симуляторе Xcode, однако, все 50 видеороликов начинают воспроизводиться. Эта проблема возникает только на самом устройстве.Сколько AVPlayers разрешено создавать одновременно?

enter image description here

Кроме того, я получаю эти две ошибки, когда я печатаю это:

print("Video player Status Failed: player item error = (self.player.currentItem.error)") 
print("Video player Status Failed: player error = \(self.player.error)") 

2016-11-07 15: 53: 46,548288 SampleApp [1810: 515089] Видеоплеер Состояние Failed: player item error = Error Domain = AVFoundationErrorDomain Code = -11839 «Невозможно декодировать» UserInfo = {NSUnderlyingError = 0x1704414d0 {Ошибка домена = NSOSStatusErrorDomain Code = -12913 "(null)"}, NSLocalizedFailureReason = Требуется декодер, необходимый для этого носителя. NSLocalizedRecoverySuggestion = Остановить любые другие действия, которые декодируют носитель и повторить попытку., NSLocalizedDescription = Невозможно декодировать} 2016-11-07 15: 53: 46,548358 SampleApp [1810: 515089] Видеоплеер Состояние Failed: игрок ошибка = (нуль)

Есть ли предел того, сколько AVPlayer «s вы могли бы иметь, или я делаю что-то неправильно?

Спасибо!

ответ

2

Действительно, известно, что существует ограничение на количество экземпляров AVPlayer, которые вы можете сохранить в одно и то же время, но этот предел зависит от платформы, на которой работает ваш код. Я сам обнаружил, что на iPhone 5s под управлением iOS 8 был предел 4 одновременных экземпляров AVPlayer. Here, например, пользователь сообщает о пределе 7 для tvOS, и тот же предел 4 был указан в 2012 году in stack overflow.

В любом случае этот лимит, который официально не документирован, означает, что он может изменяться взад и вперед между платформами и версиями ОС, поэтому вы не должны основывать какой-либо код на этом, кроме как просто поддерживать одновременные экземпляры AVPlayer как можно ниже.

+0

Скорее всего, функция аппаратного обеспечения? –

+0

@i_am_jorf хорошо, тот факт, что они не документируют это, делает его очень вероятным функцией чего-либо. – pevasquez

+0

@pevasquez Для моего приложения у меня будет около 10-20 видео одновременно. Есть ли обходной путь для этого? Любые библиотеки? или есть способ повторно использовать AVPlayers? Благодаря! – JEL