gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:50 27 4
gpt4 key购买 nike

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

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

问题是:如果我非常快地来回滚动,让相同的视频进出屏幕,AVPlayer 发送的请求最终会改变,包括 HTTP header If-None-MatchIf-Modified-Since,其余时间不存在。它系统地使服务器返回一个 304 Not Modified 响应。

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

那就是它变得奇怪的时候:无论我接下来做什么,AVPlayer 及其 playerItem 都被不可挽回地烧掉了。即使我用其他 Assets 重新配置它们,它们也只会返回此状态并显示黑框。更奇怪的是:即使我初始化了另一个 AVPlayer、AVPlayerItem AVAsset,它也不会再播放了,我必须终止并重新启动该应用程序。

这个时候,我是一头雾水。知道这里发生了什么吗?阻止播放器在其连接中包含这些 header 可以修复它,但它不会公开其请求序列化程序。

最佳答案

304 未修改

我遇到了 304 Not Modified 响应,这发生在 AVPlayer 重播同一视频时,并且 AVPlayerItem.status 变为 failed,详细错误是内容范围不匹配 - 应该是开始 0 长度 2 是开始 0 长度 1048575但是,不同的是如果AVPlayer切换播放其他视频,播放是正常的。

详细的Http请求和响应示例:

Request part
If-Modified-Since: Sat, 24 Jun 2017 03:41:12 GMT
Range:bytes=0-1

Response part
HTTP/1.1 304 Not Modified
Content-Range: bytes 0-1048575/13852554

解决方案:
修改服务端逻辑,将Content-Range值改为bytes 0-1/13852554或者直接删除Content-Range,即可开始播放通常。

关于iOS:收到 `304 Not Modified` 响应时 AVPlayerItem 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29243822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com