【发布时间】:2015-03-24 22:09:46
【问题描述】:
这是一个非常奇怪的错误。
我有一个 tableView,每个单元格都使用 AVPlayer 从远程服务器流式传输视频(想想类似 Vine 的时间线)。因此,当我滚动时,被重复使用的单元格会使用新视频重新配置其播放器。
问题是:如果我快速来回滚动,让相同的视频进出屏幕,AVPlayer 发送的请求最终会改变,包括 HTTP 标头 If-None-Match 和 If-Modified-Since,其中其余时间都不在那里。它系统地使服务器返回一个304 Not Modified 响应。
这似乎让 AVPlayer 的 playerItem 不满意,它将其状态更改为 AVPlayerItemStatusFailed(有趣的是,AVPlayer 的状态仍然是 AVPlayerStatusReadyToPlay)。错误是 AVErrorUnknown (-11800) 和 OSStatus -12983 (在任何地方都没有记录,并且在整个 iOS SDK 中没有标题)。
那是它变得奇怪的时候:无论我接下来做什么,AVPlayer 和它的 playerItem 都会被不可撤销地烧毁。即使我用其他资产重新配置它们,它们也只会返回此状态并显示黑框。更奇怪的是:即使我初始化了另一个 AVPlayer,AVPlayerItem 和 AVAsset,它也不会再播放了,我必须杀死并重新启动应用程序。
在这一点上,我很无知。知道这里发生了什么吗?阻止播放器在其连接中包含这些标头会修复它,但不会暴露其请求序列化程序。
【问题讨论】:
标签: ios avfoundation avplayer avasset avplayeritem