【发布时间】:2013-12-03 18:55:40
【问题描述】:
例如,有几个人尝试使用AVPlayer 或MPMoviePlayerController 缓存预加载的视频数据
- Caching with AVPlayer and AVAssetExportSession
- Access the data of AVPlayer when playing video from HTTP Live Streaming
最直接的方法似乎是在玩家的currentItem 上使用AVExportSession,但似乎没有人能够让它工作。
我的问题是:是否可以通过基于磁盘的缓存支持的嵌入式 HTTP 服务器透明地代理设备上的视频请求?
我可以运行嵌入式 Web 服务器 (GCDWebServer),所以我的问题是
缓存会搞砸
AVPlayer试图选择最高带宽流的带宽优化代码吗?如果这是一个问题,我可以控制流,因此它只提供一个选项。磁盘性能是否足以提供网络改进?看起来很明显会是这样,但我在网络上看到了各种文章,谈论 iOS 上的磁盘 I/O 有多慢。
谢谢!
【问题讨论】:
-
您的问题和您提到的问题都不清楚您的目标是什么。您是尝试在本地保存播放视频的副本(您对 AVExportSession 的引用)还是尝试实现自己的缓存以改善播放?
-
我看不出你试图画出的区别。 “在本地保存播放视频的副本”和“实现缓存以改善播放”有什么区别?这些不是一回事吗?我不知道不会在本地保存视频的缓存方法。
-
区别在于实现。正如您所指出的,您可以使用代理机制来捕获正在下载的内容(从“玩家”的角度来看),或者使用 AVExportSession 来捕获已经下载/正在播放的数据。
-
对。所以这个问题的目的是询问社区这些实现是否可行。第一个问题linked above 显示了围绕
AVExportSession方法的疑问。正如我在问题正文中提到的那样,透明代理AVPlayer也可能不起作用是有原因的。 -
嗨@bcattle - 我正在处理完全相同的问题 - 我想在 iOS 上缓存我的视频,但到目前为止,我所有的尝试都失败了
NSURLProtocol和自定义resourceLoader。我现在要实现一个透明代理,所以想问一下你是否在这方面取得了任何进展?
标签: ios iphone avfoundation mpmovieplayercontroller avplayer