Итак, я знаю, что AVPlayerItemDidPlayToEndTimeNotification
отправляется, когда фильм сыграл до конца.
Мой вопрос в том, как игрок знает, достигнет ли элемент времени до конца? Я играл в прямом эфире, создаваемом сторонним генератором. Он продолжает обновлять M3U8 и создавать новые TS файлы, которые должны транслироваться в прямом эфире. Но в какой-то момент мой игрок получает AVPlayerItemDidPlayToEndTimeNotification
и, таким образом, вызывает мои методы выхода и завершает работу. Тем не менее, генератор стороннего потока все еще работает нормально. Я могу перезагрузить плеер и посмотреть потоки.
Поскольку игровой элемент является потоком в реальном времени, playerItem.duration
не является читаемым номером продолжительности, что делает поиск конечного времени больше похожим на черную магию для меня...
На самом деле путают, как игрок думает, что это конец. Мое предположение, возможно, файл TS был проблематичным и заставил игрока подумать, что игра закончилась? Но если это так, должен ли игрок изменить свой статус, чтобы сказать "sth" вместо того, чтобы спокойно закончить игру?
P.S. Я также пробовал разные способы, как сделать один тс отсутствующим в списке m3u8 или прекратить генерировать новые, чтобы игрок играл текущую m3u8 и играл за последние ts, ничего не делало магию AVPlayerItemDidPlayToEndTimeNotification
....
Я зарегистрировал уведомление следующим образом:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:self.playerItem];