美文网首页安卓视频模块
Android视频缓存之AndroidVideoCache(一)

Android视频缓存之AndroidVideoCache(一)

作者: 极客匠 | 来源:发表于2019-12-27 00:16 被阅读0次

AndroidVideoCache主要是做视频缓存管理功能,支持边下边播,离线播放和缓存管理等。用MediaPlayer可以支持在线播放和播放本地资源。但是不支持缓存,因此很消耗用户流量和服务器流量。这时候AndroidVideoCache就可以派上用场了。

1. 基本原理

AndroidVideoCache通过代理的策略将我们的网络请求代理到本地服务,本地服务决定数据是从缓存获取还是发起网络请求,如果需要发起网络请求就先向本地写入数据,再从本地服务获取数据给VideoView,从而做到数据的复用。

2. 主要内容介绍

HttpProxyCacheServer是AndroidVideoCache对外的接口,通过这个类和Videoview联系起来,判断本地是否有缓存,有的话直接返回本地文件;没有就建立一个和url对应的HttpProxyCacheServerClients处理本次请求,请求工作交给Source接口,缓存工作交给Cache接口,文件缓存是用LRU算法实现,可以根据文件大小或者文件个数管理缓存。

CacheListener是缓存本地成功后回调的接口,用于更新进度相关的UI。

  • cacheRoot是缓存默认的文件夹,如果有SD卡并申请了权限,会把文件放到下面的目录下:

    • ("/Android/data/[app_package_name]/cache")
      

      否则就放到手机的内部存储中

      cacheDirPath = "/data/data/" + context.getPackageName() + "/cache/";
      
  • FileNameGenerator 用于生成文件名,默认是使用Md5FileNameGenerator,生成MD5串作为文件名

  • DiskUsage是用于管理本地缓存,默认是通过文件大小进行管理,默认大小是512M

  • SourceInfoStorage是用于存储SourInfo,默认是数据库存储

  • SourInfo主要用于存储http请求源的一些信息,比如url,数据长度length,请求资源的类型mime

  • HeaderInjector 用于添加自定义的头部字段,默认是null

3.使用方法

  1. 首先导包:
compile 'com.danikula:videocache:2.7.1'
  1. 创建代理
HttpProxyCacheServer proxy = getProxy();
   String proxyUrl = proxy.getProxyUrl(VIDEO_URL);
   videoView.setVideoPath(proxyUrl);

相关文章

网友评论

    本文标题:Android视频缓存之AndroidVideoCache(一)

    本文链接:https://www.haomeiwen.com/subject/gvrroctx.html