在ios中缓存视频
我有以下方法在AVMediaPlayerController上播放视频在ios中缓存视频,ios,objective-c,video,nsurlcache,Ios,Objective C,Video,Nsurlcache,我有以下方法在AVMediaPlayerController上播放视频 -(void)sendRequestForVideo { NSString*VideoStr=@"http://www.ebookfrenzy.com/ios_book/movie/movie.mov"; NSURL *url = [NSURL URLWithString:VideoStr]; AVPlayer *player = [AVPlayer playerWithU
-(void)sendRequestForVideo
{
NSString*VideoStr=@"http://www.ebookfrenzy.com/ios_book/movie/movie.mov";
NSURL *url = [NSURL URLWithString:VideoStr];
AVPlayer *player = [AVPlayer playerWithURL:url];
AVPlayerViewController *controller = [[AVPlayerViewController alloc]init];
controller.player = player;
[self addChildViewController:controller];
[self.view addSubview:controller.view];
controller.view.frame = self.view.frame;
[player play];
}
我想像缓存图像一样缓存这里播放的视频,但我无法缓存它,也不明白我应该如何实现这一点,因为有太多事情与AVfoundation frammework相关。请给出一些建议,说明如何将视频存储在nsurl缓存中。提前感谢 直接的方法是使用
NSUrlSession
下载视频,并使用内置缓存系统保存视频数据。您可以在本SO中查看详细信息。但这样你实际上下载了两次视频并重新使用它。所以,您可能最终会使用来自用户电话的更多数据
另一种使用AVAssetExportSession的方法是将播放的视频保存到文件系统中,并在需要时重新使用
目标C
敏捷的
在AVAssetExportSession的帮助下,我们实际上正在重新使用播放的视频,这样用户电话数据就不会被浪费,我们也很容易重复使用。查看以下文档链接以更好地理解
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL = exportUrl; // consider you have a export url
[exporter exportAsynchronouslyWithCompletionHandler:^{
// here your file will be saved into file system
}];
let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)
let filename = "filename.mp4"
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).last!
let outputURL = documentsDirectory.URLByAppendingPathComponent(filename)
exporter?.outputURL = outputURL
exporter?.outputFileType = AVFileTypeMPEG4
exporter?.exportAsynchronouslyWithCompletionHandler({
print(exporter?.status.rawValue)
print(exporter?.error)
})