Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
缓存视频iOS_Ios_Objective C_Caching_Avplayer_Avplayeritem - Fatal编程技术网

缓存视频iOS

缓存视频iOS,ios,objective-c,caching,avplayer,avplayeritem,Ios,Objective C,Caching,Avplayer,Avplayeritem,我如何才能完全了解该资产或项目或任何下载的视频。 我需要它为将来缓存它 现在我使用 AVAsset *asset = [AVAsset assetWithUrl:@"myUrl.mp4"]; AVPlayerItem * item = [AVPlayerItem itemWithAsset:asset]; AVPlayer * player = [AVPlayer playerWithItem:item]; playerViewController.player = player

我如何才能完全了解该资产或项目或任何下载的视频。 我需要它为将来缓存它

现在我使用

  AVAsset *asset = [AVAsset assetWithUrl:@"myUrl.mp4"];
  AVPlayerItem * item = [AVPlayerItem itemWithAsset:asset];
  AVPlayer * player  = [AVPlayer playerWithItem:item];
 playerViewController.player = player;
 [player play];
当我从nscache中检索数据时,我将其写入文件并播放

NSData * videoData = [NSData dataWithUrl:myurl.mp4"];
NSCache *cache = [NSCache new];
[cache setObject:videoData forKey:myUrl];
然后

NSData *videoData = [cache objectForKey:myUrl];
[videoData writeToFile:MyPath.mp4 atomically:YES];
…等着玩

但是它有点慢。 如果视频数据包含在AVAsset中,我可以存储它或AVPlayerItem。但我需要知道它是何时下载的


如何以不同的方式实现缓存或升级此缓存。帮助。

我们可以使用nsursession、download in progress和completion fires委托方法从云下载任何数据,我们可以通过使用该委托方法了解下载完成事件和进度事件,您可以使用以下方法实现下载功能


我们可以使用nsursession、download in progress和completion fires委托方法从云下载任何数据,我们可以通过使用该委托方法了解下载完成事件和进度事件,您可以使用以下方法实现下载功能


我有一个应用程序,它具有视频项目的垂直收集视图,每个项目都应该不断重复,直到向上或向下滑动

所以我不需要每次流式传输文件,也不需要下载以前下载的文件

我提出了稍微不同的方法:

  • 流avurlaste
  • 到达结束时,我使用AVAssetExportSession将文件保存到磁盘
  • 然后我使用保存的文件使用新的AVAsset创建新的AVPLayerItem
  • AVPlayer的替换当前项(带:)

  • 但我想这是跛脚的。我得用蒸汽锉两次。第一次运行时,然后在保存文件时。我只想将当前应用程序会话的AVAsset缓存到内存中,因此我不需要保留文件。

    我有一个应用程序,它具有视频项目的垂直收集视图,每个项目都应该不断重复,直到向上或向下滑动为止

    所以我不需要每次流式传输文件,也不需要下载以前下载的文件

    我提出了稍微不同的方法:

  • 流avurlaste
  • 到达结束时,我使用AVAssetExportSession将文件保存到磁盘
  • 然后我使用保存的文件使用新的AVAsset创建新的AVPLayerItem
  • AVPlayer的替换当前项(带:)
  • 但我想这是跛脚的。我得用蒸汽锉两次。第一次运行时,然后在保存文件时。我只想将AVAsset缓存到当前应用程序会话的内存中,因此不需要保留文件

     NSURL *url = [NSURL fileUrlWithPath:mypath];
    AVAsset *asset = =[AVAsset assetWithURL:url];