究竟是什么触发了AVPlayerItemDidPlayToEndTimeNotification?

Ooo*_*ops 13 objective-c avplayer

所以我知道AVPlayerItemDidPlayToEndTimeNotification当一部电影' 播放到它的结束时间 '时发送.

我的问题是玩家如何知道物品是否到达结束时间?我正在播放由第三方生成器生成的直播.它不断更新M3U8并创建新的TS文件,实时流媒体应该这样做.但是在某些时候我的玩家会收到一个AVPlayerItemDidPlayToEndTimeNotification并因此调用我的退出方法并退出.第三方流生成器仍然运行正常.我可以重新启动播放器并观看流.由于播放项目是直播,playerItem.duration不是一个可读的持续时间数字,这使我觉得结束时间更像是一个黑魔法......

真的很困惑玩家怎么认为它结束了.我的猜测可能是TS文件有问题,让玩家认为整场比赛结束了?但如果是这样,玩家是否应该改变其状态而不是默默地完成比赛?

PS我也尝试过不同的方法,例如从m3u8列表中删除一个ts,或者停止生成新的,以便玩家可以播放当前的m3u8并播放过去的最后一个ts,没有什么能让AVPlayerItemDidPlayToEndTimeNotification魔术发生......

我将通知注册如下: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.playerItem];

Ooo*_*ops 5

所以..事实证明问题来自第三方流生成器.当流式传输TS内容时,它有某些('IV',如在初始向量中)错误,所以在某些时候AVPlayer读取TS上的某个点,然后考虑电影已完成,从而发送AVPlayerItemDidPlayToEndTimeNotification....不是真的是一个目标-C问题​​我想.

但我的问题是什么条件AVPlayer发送AVPlayerItemDidPlayToEndTimeNotification仍然是未知的.如果有人知道有关这方面的任何细节,请随时在此更新.谢谢!