So I know AVPlayerItemDidPlayToEndTimeNotification
is sent when a movie 'has played to its end time'.
My question is how does the player know if an item reaches its end time? I was playing a live stream generated by a 3rd party generator. It keeps updating the M3U8 and creating new TS files, which live streaming should do. But at some point my player receives an AVPlayerItemDidPlayToEndTimeNotification
and thus invokes my exit methods and quit. The 3rd party stream generator is still running OK though. I can restart the player and watch the streams.
Since the playing item is a live stream, playerItem.duration
is not a readable duration number, which makes finding the End Time more like a black magic to me...
プレイヤーがどうやって終わりだと思っているのか、本当に混乱しています。私の推測では、おそらく TS ファイルに問題があり、プレーヤーに再生全体が終了したと思わせたのでしょうか? しかし、もしそうなら、プレイヤーは無言でプレイを終了するのではなく、sth と言うようにステータスを変更する必要がありますか?
PS また、m3u8 リストから欠落している 1 つの ts を作成するか、プレーヤーが現在の m3u8 を再生し、最後の ts を過ぎて再生するように新しいものの生成を停止するなど、さまざまな方法を試しましたが、AVPlayerItemDidPlayToEndTimeNotification
魔法は何も起こりませんでした....
次のように通知を登録しました。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:self.playerItem];