AVPlayerCache 0.0.7

AVPlayerCache 0.0.7

测试已测试
语言语言 Objective CObjective C
许可证 MIT
发布最新发布2020年7月

cherokeerose维护。



  • 作者
  • liutianrong

AVPlayerCacheDemo

AVPlayer缓存原理

1、当播放器需要预先缓存一些数据时,不让播放器直接向服务器发起请求,而是向我们自己写的某个类(resourceLoader)发起缓存请求。

2、resourceLoader根据播放器的缓存请求的内容,向服务器发起请求。

3、服务器返回resourceLoader所需的数据。

4、resourceLoader将服务器返回的数据写入本地的缓存文件中,同时将数据回填给请求。

5、当整首歌都缓存完成以后,resourceLoader需要把缓存文件复制一份,改名,这个文件就是我们需要的本地持久化文件。

6、下次播放器播放歌曲时,先判断本地是否有这个名的文件,有则播放本地文件,没有则向resourceLoader请求数据

CocoaPods导入:

$ pod 'AVPlayerCache'

使用:

NSURLComponents *components = [[NSURLComponents alloc] initWithURL:[NSURL URLWithString:url] resolvingAgainstBaseURL:NO];
self.resourceLoader.scheme = components.scheme;
components.scheme = @"stream";

AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:components.URL options:nil];
[urlAsset.resourceLoader setDelegate:self.resourceLoader queue:dispatch_queue_create("ResourceLoaderQueue", DISPATCH_QUEUE_SERIAL)];
playerItem = [AVPlayerItem playerItemWithAsset:urlAsset];

缓冲说明

您可以在resourceLoader中设置cachesFolder,自动将缓冲完成的文件复制到沙盒中Cache目录下的该目录。

您也可以在缓冲完成后获取resourceLoader中的tmpfile,为该缓冲文件的完整路径,如果缓冲未完成或缓冲文件不正确,则该字段为nil。