Почему не работает AVPlayer Boundary Time Observer?

Вы должны использовать UTF8Encoding вместо UnicodeEncoding. Последний кодируется UTF16, поэтому не байт, совместимый с ASCII. Вместо UTF8 байт совместим с ASCII. Оба поддерживают все коды Юникода, поэтому нет потери информации.

Но часто не так повезло, что у вас есть суперсетный кодер. Поэтому в общем случае вы должны отслеживать кодировку (например, в новом поле) или просто использовать одну кодировку (чтобы вы конвертировали все свои базы данных).

0
задан wizeOnes 17 February 2019 в 03:07
поделиться

1 ответ

Возможны две проблемы:

  1. Как указано в документации для addBoundaryTimeObserver:

    Вы должны поддерживать строгую ссылку на возвращаемое значение как Пока вы хотите, чтобы наблюдатель вызывал наблюдатель времени

    Поскольку ваш исходный код не сохраняет ссылку на возвращенный внутренний непрозрачный наблюдатель времени, наблюдатель, вероятно, освобождается немедленно и, следовательно, никогда не будет называется.

  2. Убедитесь, что время, которое вы регистрируете для наблюдения, действительно имеет правильное значение:

    • playerItem.duration может быть неопределенным (см. Документацию этого свойства)
    • даже продолжительность элемента playerItem asset может быть неизвестна, или неточная оценка, в зависимости от типа актива и состояния загрузки (снова, см. документацию AVAsset.duration на это).

    Как следствие, время, которое вы регистрируете для наблюдения, может никогда не быть достигнуто (обратите внимание, что время можно легко проверить, вставив CMTimeShow(duration))

[1124 ] Подходы для решения этой проблемы:

  • , если вы просто хотите остановить игрока, когда достигнут конец playerItem, установки player.actionAtItemEnd в pause может быть достаточно

  • если вам нужно выполнить некоторую настраиваемую логику, когда достигается конец элемента, зарегистрируйте наблюдателя для уведомлений AVPlayerItemDidPlayToEndTime с playerItem в качестве объекта. Этот механизм не зависит от, возможно, точных длительностей и, следовательно, более надежен

0
ответ дан NoHalfBits 17 February 2019 в 03:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: