iOS:收到“304 Not Modified”响应时AVPlayerItem中的错误

这是一个非常奇怪的错误。

我有一个tableView与每个单元格使用AVPlayer从远程服务器流式传输video(想想类似Vine的时间轴)。 因此,当我滚动时,重新使用的单元格会使用新video重新配置其播放器。

问题是:如果我来回滚动非常快,将相同的video输入和输出屏幕,AVPlayer发送的请求最终会发生变化,包括HTTP标头If-None-MatchIf-Modified-Since ,其余的时间不存在。 它系统地使服务器返回304 Not Modified响应。

这似乎不能取悦AVPlayer的playerItem,它将其状态更改为AVPlayerItemStatusFailed (有趣的是,AVPlayer的状态仍然是AVPlayerStatusReadyToPlay )。 错误是AVErrorUnknown (-11800)(未在任何地方记录,并且在整个iOS SDK中没有标题)。

那就是它变得奇怪:无论我接下来做什么,AVPlayer及其playerItem都不可挽回地被烧毁。 即使我使用其他资产重新配置它们,它们也会返回此状态并显示黑框。 Weirder仍然:即使我初始化另一个AVPlayer,AVPlayerItem AVAsset,它也不会再玩了,我必须杀死并重新启动应用程序。

在这一点上,我很无能为力。 知道这里发生了什么吗? 防止播放器在其连接中包含这些标头会修复它,但它不会暴露其请求序列化器。