AndroidVideoCache研究
AndroidVideoCache研究
01.AndroidVideoCache + ijk
我们想让ijk支持边下边播的能力,通过AndroidVideoCache就可以实现,AndroidVideoCache的设计很优雅,能够解耦不同的播放器,比如可以支持ijk、系统播放器mediaplayer、exoplayer等等。
ijk我们还使用之前文章里的代码:
ijkplayer系列1:ijkplayer介绍
https://blog.csdn.net/a910626/article/details/93657087
下面主要展示怎么把AndroidVideoCache和ijk融合。
代码:
compile 'com.danikula:videocache:2.7.1'
public class Application extends android.app.Application {public static Context context;@Overridepublic void onCreate() {super.onCreate();context = this;}private HttpProxyCacheServer proxy;public static HttpProxyCacheServer getProxy() {Application app = (Application) context.getApplicationContext();return app.proxy == null ? (app.proxy = app.newProxy()) : app.proxy;}private HttpProxyCacheServer newProxy() {return new HttpProxyCacheServer(this);}
}
activity中
// 2.长视频测试缓存下载机制String VIDEO_URL = "http://vfx.mtime.cn/Video/2017/03/31/mp4/170331093811717750.mp4";HttpProxyCacheServer proxy = Application.getProxy();String proxyUrl = proxy.getProxyUrl(VIDEO_URL);try {videoPlayer.load(proxyUrl);} catch (IOException e) {Toast.makeText(this,"播放失败",Toast.LENGTH_SHORT);e.printStackTrace();}
缓存位置:
02. AndroidVideoCache原理
在一般的播放器请求数据的模型中,播放器直接通过url连接到远程服务器,播放器下载后的数据直接交给播放器缓冲区,数据使用完了以后直接淘汰掉。
如果我们在播放器与远程server中间插入一个本地透明代理,这样透明代理就可以接管播放器的请求,透明代理从远程server下载完数据就可以先保存在本地,然后把所需要的数据交给播放器。类似于我们Charles抓包这样。下一次播放器请求相同的数据,就可以在本地代理这里找到对应的缓存文件,直接返回。
03. AndroidVideoCache代码架构梳理
在看代码前,先说下它的整个设计思路,大体可以理解成两部分,这也是我看完后自己的理解:
1、开启一个线程池去给定的路径下下载文件,将下载的文件保存到本地;
2、视频播放的时候读保存到本地的文件,如果播放的地方还没保存到本地,那就需要等待视频下载到这个地方才能播放;
上面这种情况是边播边缓存,如果在已经缓存好去播视频时,这时执行的逻辑就是直接播放本地视频了;
待todo
可以通过debug追踪代码实现
04.参考资料
AndroidVideoCache-视频边播放边缓存的代理策略
https://www.jianshu.com/p/4745de02dcdc
AndroidVideoCache源码详解以及改造系列-源码篇
https://www.jianshu.com/p/dfc18278b053
AndroidVideoCache解析
https://blog.csdn.net/zhqw_csdn/article/details/81514313
视频缓存AndroidVideoCache攻略
https://www.jianshu.com/p/53c4a6c9bd07
AndroidVideoCache研究相关推荐
- Android:Android9.0使用 AndroidVideoCache时不能缓存播放视频的解决
一.问题现象: 项目中使用 https://github.com/danikula/AndroidVideoCache 作为视频缓存组件,但是在9.0手机上无法正常缓存,并且报错: 1.详细错误截图 ...
- AndroidVideoCache解析
前言 之前做短视频项目,需求是需要视频缓存功能,我也觉得比较合理,毕竟一个视频看完之后重复观看的时候还需要从网上加载是很不友好的事情,一方面耗费用户的流量,另一方面直接从本地播放要更流畅 ...
- AndroidVideoCache源码赏析
前言 AndroidVideoCache 是用来帮助实现视频音频边缓存边播放的开源库,最近有个视频播放的功能,为了避免视频数据重复加载,就使用了这个库,感觉很棒,而且这个库的实现思路非常值得学习研究, ...
- Android视频边播放边缓存的代理策略之——AndroidVideoCache
简介 AndroidVideoCache是国外大神Alexey Danilov写的一个android开源库.一个视频/音频缓存库,利用本地代理实现了边下边播,支VideoView/MediaPlaye ...
- 2022-2028年中国安防行业研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国安防行业市场行业相关概述.中国安防行业市 ...
- 2022-2028年中国盲盒产业研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国盲盒行业市场行业相关概述.中国盲盒行业市 ...
- 2021-2027年中国手机结构件行业投资分析及发展战略研究咨询报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国手机结构件行业市场行业相关概述.中国手机 ...
- 2021-2027年中国手机壳行业现状研究及发展趋势分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国手机壳行业市场行业相关概述.中国手机壳行 ...
- 2021-2027年中国医疗护理行业深度研究及发展趋势报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国医疗护理行业市场行业相关概述.中国医疗护 ...
最新文章
- python爬取正确但不出文件_python爬取糗事百科,该如何正确保存到本地文件夹?报错-问答-阿里云开发者社区-阿里云...
- 为你的组织设计自己的障碍消除流程
- STM32F103--(二) GPIO实践
- 死锁的4个必要条件和处理策略
- 谋定菲律宾农业全产业链建设 对话国际农民丰收节贸易会
- LeetCode Algorithm 169. 多数元素
- ios 自动内存管理 ARC
- linux配置dhcp中继服务
- centos7开启vnc服务_阿里云CentOS 7搭建VNC远程桌面服务步骤方法
- erp采购总监个人总结_erp采购总监总结.docx
- VS Code 直接跳到下一行编辑快捷键
- 工业互联网解决方案创新应用报告(2020)
- Suggestion [3,General]: 找不到命令 webpack,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为键
- C语言:百鸡百钱问题
- 摄像头录像软件测试初学者,几款好用的摄像头视频捕获工具推荐
- 【实用软件】电脑wifi密码查看器
- 苹果硅:Wintel的过去
- 在小百合注册了一个帐号
- Jump视频实时抠图和语音降噪
- 通过Safari浏览器获取iOS设备UDID(设备唯一标识符)