Iphone 使用AVPlayer和AVAssetExportSession进行缓存

Iphone 使用AVPlayer和AVAssetExportSession进行缓存,iphone,ios,video-streaming,avfoundation,avplayer,Iphone,Ios,Video Streaming,Avfoundation,Avplayer,我想使用AVPlayer缓存渐进式下载视频。如何将AVPlayer的项目保存到磁盘?我正在尝试对玩家的当前物品(已满载)使用AVAssetExportSession。此代码显示“AVAssetExportSessionStatusFailed(操作无法完成)”: 如何成功导出?我正在考虑将mediaAsset复制到AVMutableComposition中,但在这方面也没有太多运气 谢谢 PS:以下是一些试图完成相同任务的人提出的问题(但使用MPMoviePlayerController):

我想使用AVPlayer缓存渐进式下载视频。如何将AVPlayer的项目保存到磁盘?我正在尝试对玩家的当前物品(已满载)使用AVAssetExportSession。此代码显示“AVAssetExportSessionStatusFailed(操作无法完成)”:

如何成功导出?我正在考虑将mediaAsset复制到AVMutableComposition中,但在这方面也没有太多运气

谢谢

PS:以下是一些试图完成相同任务的人提出的问题(但使用MPMoviePlayerController):


我还没有使用iOS 4.3 SDK,但我很想知道4.3下mediaAsset.exportable的价值,如下所述:

我尝试过对代码进行一些修改,例如从可用代码列表中获取预设名称和文件类型,但我得到的错误与您的相同

因此,我决定尝试一个较低级别的框架,因为文档中指出,可以连接AVAssetReader和AVAssetWriter,以获得与AVAssetExportSession相同的效果,但需要更多的控制。但是,以下代码:

NSError *readerError = nil;
AVAssetReader *reader = 
  [AVAssetReader assetReaderWithAsset:mediaAsset error:&readerError];
if (readerError) NSLog(@"Error instantiating asset reader: %@",
  [readerError localizedDescription]);
提供以下输出:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[AVAssetReader initWithAsset:error:] Cannot initialize an instance of 
AVAssetReader with an asset at non-local URL 'http://example.com/test.mp3''
注意,我用一个工作URL测试了它,但用上面的一个假的URL替换了它。在我看来,iOS不支持我们正在寻找的功能。据我所知,AVAssetExportSession在引擎盖下使用Avassetrader,当它失败时,只会报告一个少得多的描述性错误。如果他们能把它记录下来就好了。AVAssetExportSession的文档中没有提到任何需要本地的资产:


我知道这不是一个很好的答案,但它使调查工作向前推进了一点。我仍然真的希望有办法做到这一点,因为显然我们并不是唯一想要这一功能的人。

当然,它在iOS 4.X上不起作用。有人试过让它在iOS5测试版上运行吗


这似乎是一个缺失的特征。文档中没有任何地方说明它不支持网络媒体的数据访问。即使是API中的错误消息和其他东西,在尝试运行它时也会变得很奇怪,而且似乎不完整。很可能很快就会得到支持

是的,我遇到了同样的问题。更糟糕的是,mediaAsset.exportable是肯定的!但它仍然抛出“无法初始化…在非本地URL”异常。您只对音频感兴趣还是主要对音频感兴趣?因为如果是这样,可以通过连接URL加载系统、音频文件流服务和音频队列服务来实现这一点。我现在正在研究一个解决方案,但它相当复杂。有兴趣吗?不幸的是,我需要缓存整个视频。谢谢,过几天我会把你标记为被接受的答案。杰西,你能谈谈你的音频解决方案吗,或者分享一下?如果是,请通过电子邮件或此处的评论与我联系。@RomanTemchenko:很抱歉,我从未真正完成过该解决方案。这看起来很简单,但随后我就挂断了向AQS提供带有适当元数据的编码数据包的所有细节,等等。由于那些低级A/V框架是一个文档不足的黑匣子,我花时间把它全部弄清楚还不够重要。嘿!你解决了吗?
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[AVAssetReader initWithAsset:error:] Cannot initialize an instance of 
AVAssetReader with an asset at non-local URL 'http://example.com/test.mp3''