我正在使用AVPlayer
类通过将AVPlayerItem
个实例加载到播放器中来传输远程(并且非常长)的MP3文件:
let player = AVPlayer(playerItem: myAVPlayerItemInstance)
我收听KVO更改和系统通知,以便在缓冲开始或结束时以及项缓冲区变空时进行检测。
如果我在线播放文件,即使在缓冲时我也可以毫无延迟地收听。我可以来回跳跃,使用滑块跳转到流中的任何位置等等。一切都很好。
如果我开始播放文件,然后在仅缓冲整个文件的一小部分后快速离线,我可以将时间滑块拖动到缓冲内容之外。然后播放器将暂停,因为没有更多内容可播放。如果我再上网,音频会自动重新开始播放。
到目前为止,非常好。
但是,如果我开始播放文件,然后在缓冲整个文件的一小部分后快速离线,然后让播放器播放到缓冲内容的末尾,就会发生奇怪的事情。玩家当然会暂停,因为没有更多的内容可以播放。但是,如果我现在上线,音频播放器将不会播放加载项目中的任何内容。我告诉玩家玩,并正确设置播放速率,但该项目不会播放。
为什么会发生这种情况?