我有一个应用程序,该应用程序当前附带了它可以播放的所有视频。这不能很好地扩展,除非您想播放所有电影,否则会浪费磁盘空间。由于您必须重新下载所有电影,因此升级应用程序也不太理想。
我想做的是即时下载电影,在下载时播放,然后如果下载成功,将其保存到文件系统,以便下次他们想观看时,它会从本地文件流式传输。
我可以对视频做任何需要的事情,但目前我将它作为来自 Amazon S3 的 .mp4 文件提供,具有视频/mp4 的 mimetype,所以我的问题的前半部分工作正常:电影下载,一旦 MPMovieViewController 认为下载“足够”,它就会开始播放它。
有没有办法利用该视频文件的缓存,以便我可以保存它并控制它在文件系统上的驻留时间?这似乎是最简单的方法。
我的目标是 iOS 5+6,但如果唯一可用的解决方案需要 iOS 6,我也会考虑。谢谢!
更新:使用 AFNetworking,我想我现在已经完成了一半。我正在从服务器下载视频文件,并监听下载进度。一旦我看到 25% 的视频已下载,我开始使用 MPMoviePlayerController 播放本地文件。
我现在遇到的主要问题是播放似乎搞砸了。一切正常,下载了 25%,开始播放……下载继续正常……然后文件完全下载完毕,不久后视频冻结。屏幕播放计时器仍指示播放正在进行,我没有看到任何“播放完成”类型的通知,但视频被冻结。我基于这种行为的猜测是,视频播放的初始缓冲区可能已用完,并且现在没有检测到磁盘上有更多视频可用?
有什么方法可以与 MPMoviePlayerController 交互,让它知道定期刷新它正在播放的缓冲区吗?或者其他方式来处理这种情况?