开发中遇到需要缓存的需求,一开始我是用DiskLruCache,但是在获取缓存的时候遇到点麻烦,获取缓存返回的是输入流,可以直接通过工厂类转换到图片,但是没有直接转为音频的方式,所以,找到AndroidVideoCache这个库,集成简单,方便易用。

第一步:添加依赖

dependencies {compile 'com.danikula:videocache:2.7.1'
}

第二步:初始化

public class App extends Application {private HttpProxyCacheServer proxy;public static HttpProxyCacheServer getProxy(Context context) {App app = (App) context.getApplicationContext();return app.proxy == null ? (app.proxy = app.newProxy()) : app.proxy;}private HttpProxyCacheServer newProxy() {return new HttpProxyCacheServer(this);}
}

这一段主要是获取一个本地访问代理服务

第三步:使用代理地址

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);HttpProxyCacheServer proxy = getProxy();String proxyUrl = proxy.getProxyUrl(VIDEO_URL);videoView.setVideoPath(proxyUrl);
}

比如在onCreate中调用代理服务对原地址进行一层包装,再设置给播放器

基本使用就是这样。

如果要设置缓存区大小,可以进行如下修改:

private HttpProxyCacheServer newProxy() {return new HttpProxyCacheServer.Builder(this).maxCacheSize(1024 * 1024 * 1024)       // 1 Gb for cache.build();
}private HttpProxyCacheServer newProxy() {return new HttpProxyCacheServer.Builder(this).maxCacheFilesCount(20).build();
}

上面是设置缓存区的值,下面是设置缓存个数,两种方式只能用一种

另外,业务需求上会对缓存文件做一些操作,这时候需要对缓存文件重命名,可以继承FileNameGenerator,实现如下:

public class MyFileNameGenerator implements FileNameGenerator {// Urls contain mutable parts (parameter 'sessionToken') and stable video's id (parameter 'videoId').// e. g. http://example.com?videoId=abcqaz&sessionToken=xyz987public String generate(String url) {Uri uri = Uri.parse(url);String videoId = uri.getQueryParameter("videoId");return videoId + ".mp4";}
}...
HttpProxyCacheServer proxy = HttpProxyCacheServer.Builder(context).fileNameGenerator(new MyFileNameGenerator()).build()

通过generate()方法可以对传入的url进行自定义操作,然后返回需要的自定义文件名

AndroidVideoCache库的基本使用相关推荐

  1. 反思 | Android 音视频缓存机制的系统性设计

    反思 系列博客是我的一种新学习方式的尝试,该系列起源和目录请参考 这里 . 背景 在自媒体的时代,音视频播放 俨然已成为内容类型 APP 最基础的能力,对于 Android 开发者而言,无论是 Goo ...

  2. Exoplayer2实现边播放边缓存

    前言 ExoPlayer是Google开源的一款Android应用程序级的媒体播放器.它提供了Android MediaPlayer API的替代方法,可以在本地和Internet上播放音频和视频.E ...

  3. Windows API参考大全

    第一章 Win32 API概论 1.1为什么使用 Wu32 API 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API 函数.这些函数在程序员手中犹如" ...

  4. android button 添加事件_2019最新Android常用开源库总结

    前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...

  5. Android 第三方有用的库收集

    1. Cockroach 项目地址:android-notes/Cockroach 打不死的小强,永不 crash 的 Android. android 开发中最怕的就是 crash,好好的 APP ...

  6. Android 优秀的开源库

    前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...

  7. 浅谈Android视频缓存库

    背景 我们都了解播放器的作用就是把音视频压缩数据转换成原始的音视频数据渲染出来,这样我们就可以看到画面.听到声音了.这里的播放器就存在两个问题,第一个问题是视频源存在云端,我们每次看完视频之后重新观看 ...

  8. android 第三方视频库,android视频播放库

    因为要学习使用当前流行的视频播放库,下面介绍当前比较流行的四款视频播放库.(文章末有一些优秀的播放库) gsyvideoplayer ijkPlayer ExoPlayer jiaoziVideoPl ...

  9. 2019最新Android常用开源库总结(From:知乎)

    文章目录 一 .基本控件 **TextView** **EditText** **ImageView** **Button** **Spinner** **CheckBox** **ProgressB ...

最新文章

  1. 利用Python绘制萌萌哒的皮卡丘
  2. [你必须知道的css系列]第一回:丰富的利器2:CSS选择符之子选择符、相邻选择符...
  3. BeanDefinition构建示例
  4. 统计dataframe中所有列的null数量与填充null注意事项
  5. CListCtrl::InsertColumn()和InsertItem()和SetItemText()
  6. Google Java编程风格指南中文版(转)
  7. Java BigDecimal 数据类型的运算
  8. 凯立德地图导航2020年最新版车载_高精度地图会把自动驾驶带跑偏吗?
  9. BZOJ2434 [Noi2011]阿狸的打字机(AC自动机 + fail树 + DFS序 + 线段树)
  10. sqlserver数据库系统概论习题集
  11. 51单片机的前世今世
  12. 项目2胖子不想说体重
  13. 爱奇艺动画屋 android,爱奇艺奇巴布(com.qiyi.video.child) - 11.5.5 - 应用 - 酷安
  14. 水浒传 第三十六回 没遮拦追赶及时雨 船火儿夜闹浔阳江
  15. C++知识点(持续更新)
  16. 带孩子怎么挣钱?带孩子挣钱方法大全
  17. bedtools2安装报错:fatal error: zlib.h
  18. 虚拟桌面的服务器,虚拟桌面与集合
  19. 利用openssl进行aes加解密
  20. 美国漫画历程的阳光面与阴暗面 | 经济学人全球早报精选

热门文章

  1. 合肥达内培训php,合肥达内PHP培训php7扩展声明与获取ini配置
  2. C# 四舍五入 MidpointRounding.AwayFromZero
  3. Android通过系统打印功能实现PDF预览打印
  4. 层次分析法(评价问题)的基本解题步骤和思路
  5. 《小群效应》徐志斌踢馆,分享疫情下的私域流量新机遇
  6. 1.2 黑群晖安装中的报错(硬盘有错误,端口已被禁用、物理机安装无限还原、arpl安装卡booting、error:verification requested but nobody cares)
  7. 计算机网络二级考试类型,全国计算机二级考试科目的主要分类
  8. 计算机误删用户且电脑关机了,我的电脑在我把C盘好像是ldquo;用户rdquo;里某的文件删掉后关机蓝屏,现在求救高人:_已解决 - 阿里巴巴生意经...
  9. 亲手撸了一个SpringBoot+Vue的企业级项目(附源码)
  10. Leetcode岛屿问题系列分析