您的当前位置:首页正文

音频播放(边下边播)

来源:华佗小知识
  • 资源组织者 AVPlayerItem,根据资源请求者AVURLAsset创建

  • 资源的播放需要等资源组织者AVPlayerItem组织好数据(监听)

  • 边下边播就是自己创建请求者AVURLAsset的代理去下载数据,缓存数据,把下载完成数据抛给播放器,而不用系统代理处理

  • 只要播放器想要播放某个资源,就会让资源组织者,命令资源请求者,调用shouldWaitForLoadingOfRequestedResource方法,去发送请求

    - (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest
    

获取请求的位置:
如果加载请求的数据请求的当前位置不等于0,请求的位置就是数据请求的当前位置,否则就是数据请求的请求位置

下载数据:懒加载一个下载器对象,代理为当前对象
1、根据URL判断缓存中是否存在已下载完成的数据,存在则直接响应数据
2、如果下载器还没有已下载的数据,下载器开始从0开始下载
3、如果请求的位置小于下载器当前正在下载的位置 或者 大于正在下载的位置+一个兼容大小,下载器从0开始下载
4、如果请求的数据,就在正在下载以内,把正在下载数据当中符合条件的data 抛给播放器