objective-c - 到底是什么触发了 AVPlayerItemDidPlayToEndTimeNotification?

标签 objective-c avplayer

<分区>

所以我知道 AVPlayerItemDidPlayToEndTimeNotification 是在电影“has played to its end time”时发送的'.

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

真的很困惑玩家如何看待它的结束。我的猜测是可能是 TS 文件有问题,让玩家认为整个游戏都结束了?但如果是这样,玩家是否应该改变状态说某事而不是默默地结束游戏?

附言我还尝试了不同的方法,比如让一个 ts 从 m3u8 列表中丢失,或者停止生成新的 ts,以便播放器可以播放当前的 m3u8 并播放最后一个 ts,没有任何事情发生 AVPlayerItemDidPlayToEndTimeNotification 魔法。 ..

我注册了如下通知: [[NSNotificationCenter defaultCenter] addObserver:self 选择器:@选择器(playerItemDidReachEnd :) 名称:AVPlayerItemDidPlayToEndTimeNotification object:self.playerItem];

最佳答案

所以..原来问题出在第 3 方流生成器上。在流式传输 TS 内容时,它有某事('IV',如 Initialiation Vector )错误,所以在某些时候 AVPlayer 读取 TS 上的某个位置,然后认为电影已完成,因此发送 AVPlayerItemDidPlayToEndTimeNotification....我猜这不是真正的 Objective-C 问题。

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

关于objective-c - 到底是什么触发了 AVPlayerItemDidPlayToEndTimeNotification?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16029490/

相关文章:

iphone - 如何在 iPhone 通话期间播放声音

ios - UITextView 在 iOS 7 上绘制不正确

ios - 如何将从 CGImageRef 创建的 UIImage 对象转换为原始数据并再次转换回来

ios - 让 AVPlayer 填满整个屏幕

ios - 如何在 AVPlayer 中强制横向模式?

ios - AVPlayer 在更新进度 slider 时导致崩溃,断言失败 -[AVPlayerPeriodicCaller initWithPlayer :interval:queue:block:]

iphone - AVplayer 2-3 次后未在 ScrollView 中显示

iphone - 循环声音在循环结束时有咔嗒声

ios - 如何在 iOS 上启用/禁用设备明智的隐藏式字幕设置?

ios - IOS 是否可以检测标签是否即将溢出?