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,

Другие вопросы по тегам