当前位置: 首页 > news >正文

基于ExoPlayer的缓存方案实现

音视频APP 的一个必备功能就是在播放的时候会持续缓存完整个音频,同时进度条会更新缓存进度。但是目前Google推出的播放器ExoPlayer本身并没有提供什么方便的接口去实现这个功能,因此大多数的开发者可能会使用AndroidVideoCache 开源库来实现缓存。

AndroidVideoCache 的原理是通过代理的策略实现一个中间层,将网络视频请求转移到本地实现的代理服务器上,这样真正请求的数据就会被代理拿到,然后代理一边向本地写入数据,一边根据需要的数据看是读网络数据还是读本地缓存数据,从而实现数据的复用。其实 ExoPlayer 本身就有完善的缓存逻辑,为了实现上述功能就引入 AndroidVideoCache 虽然可以更轻松地实现,但是不够优雅。

那我们怎么改造 ExoPlayer 的代码来实现缓存进度监听的功能呢?首先,设置下 ExoPlayer,让它能在播放音频的时候持续缓存完整个音频文件。

ExoPlayer.Builder(context).setLoadControl(object : DefaultLoadControl() {override fun shouldContinueLoading(playbackPositionUs: Long, bufferedDurationUs: Long, playbackSpeed: Float): Boolean {return if (urlCacheable && isNetworkConnected) {true} else {super.shouldContinueLoading(playbackPositionUs, bufferedDurationUs, playbackSpeed)}}})
}...
http://www.lryc.cn/news/272573.html

相关文章:

  • 前缀和算法 -- 寻找数组的中心坐标
  • autograd与逻辑回归
  • Xshell 从github克隆项目:使用ssh方式。
  • C++:通过erase删除map的键值对
  • 华为月薪25K的自动化测试工程师到底要会那些技能!
  • diffusers 源码待理解之处
  • 正则表达式 详解,10分钟学会
  • 【排序算法】归并排序与快速排序:深入解析与比较
  • 万字长文谈自动驾驶bev感知(一)
  • cfa一级考生复习经验分享系列(十七)
  • 机器人活动区域 - 华为OD统一考试
  • 三、HTML元素
  • 置顶> 个人学习记录一览
  • c++重载操作符
  • C# 如何读取Excel文件
  • Vue2面试题:说一下对vuex的理解?
  • elasticsearch系列五:集群的备份与恢复
  • 【Elasticsearch源码】 分片恢复分析
  • elasticsearch如何操作索引库里面的文档
  • opencv期末练习题(2)附带解析
  • 【Mybatis】深入学习MyBatis:高级特性与Spring整合
  • C语言与人生函数的对比,使用,参数详解
  • 机器人动力学一些笔记
  • Plantuml之甘特图语法介绍(二十八)
  • Docker support for NVIDIA GPU Accelerated Computing on WSL 2
  • SQL窗口函数大小详解
  • C#上位机与欧姆龙PLC的通信06---- HostLink协议(FINS版)
  • 认识SpringBoot项目中的Starter
  • ChatGPT 4.0真的值得花钱买入吗?
  • vue3对比vue2是怎样的