AVPlayer никогда не готов к игре
У меня есть AVPlayer
который загружает удаленный носитель URL
(HLS
поток), а иногда и игрок никогда не готов к игре, но ошибки не отображается. Есть ли где-то еще ошибка или способ проверить, загружается ли она по-прежнему? AVPlayerItem
?
я имею KVO
для скорости, состояния и воспроизведения, которые, вероятно, будут поддерживаться, что никогда не вызывается, когда видео не загружается. Я добавил кнопку, чтобы проверить наличие ошибки на проигрывателе, элементе проигрывателя и возможности продолжения воспроизведения. Они сообщают ноль, ноль и ложь, когда игрок застревает. Это кажется случайным, когда игрок застревает (отказывается загружать Vidoe вообще), это не происходит на конкретном видео.
Какие еще шаги я могу предпринять для устранения этой проблемы? Есть ли другие места для проверки на наличие ошибок или статуса?
Проверено больше информации: буфер воспроизведения пуст: true буфер воспроизведения заполнен: false
2 ответа
Наше решение заключается в том, что перед повторным использованием проигрывателя мы освободили AVPlayer, используя player.replaceCurrentItemWithPlayerItem(nil)
, Некоторые причины замены текущего элемента иногда вызывали проблемы. Мы также убедились, что наши видео загружаются по порядку, а не по всем сразу. Это, казалось, решило нашу проблему.
Чтобы иметь возможность загружать URL-адреса с удаленных серверов из вашего приложения, вы должны добавить это в ваш info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>mydomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
Не добавляйте строки точно так, как я напечатал. Настройте их для своих нужд. Обратите внимание, что стандартная конфигурация Apple для iOS https
соединения, а не http
, Вы должны настроить его так, чтобы http
,