所以我知道AVPlayerItemDidPlayToEndTimeNotification
当电影“播放到结束时间”时发送。
我的问题是玩家如何知道一个项目是否达到了结束时间?我正在播放由 3rd 方生成器生成的实时流。它不断更新 M3U8 并创建新的 TS 文件,这是直播应该做的。但在某些时候,我的播放器收到一个AVPlayerItemDidPlayToEndTimeNotification
并因此调用我的退出方法并退出。3rd 方流生成器仍然运行良好。我可以重新启动播放器并观看流。由于播放项目是直播,playerItem.duration
不是可读的持续时间数字,这使得找到结束时间对我来说更像是一种黑魔法......
真的很困惑玩家如何认为它结束了。我的猜测是可能是 TS 文件有问题,让玩家认为整个播放结束了?但如果是这样,玩家是否应该改变其状态以说某事而不是默默地完成游戏?
PS我还尝试了不同的方法,比如从 m3u8 列表中删除一个 ts,或者停止生成新的,这样玩家就可以播放当前的 m3u8 并播放过去的 ts,没有任何事情让AVPlayerItemDidPlayToEndTimeNotification
魔法发生......
我将通知注册如下:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:self.playerItem];