好久没有更新博客了一个是因為太忙,业务是在太多另外一个就是也比较懒,所以拖着就有接近两个月的时间没有写博客了实在是罪过。今天分享一个开源库 这個库主要是做视频缓存管理功能,支持边下边播离线播放,缓存管理等用过MediaPlayer的小伙伴都知道,可以支持在线播放和播放本地资源但昰不支持缓存,这样很消耗用户流量这个时候Androidvideocache路径就派上用场了。
首先通过Socket回消息给视频播放器头部信息接下来判断是否需要走缓存,不走缓存就直接通过HttpUrlSource
发起HttpURLConnection
,读取数据通过Socket返回给播放器如果需要走缓存,会走下面代码先调用read读取8k的数据,读取成功通过Socket先返回给播放器再重复读直到完成。
通过循环不断读取数据直到下面其中一个条件满足:
- 或者读取的数据已经达到length的要求,默认是8k
读取数据会启動一个新的线程去读取:
在SourceReaderRunnable
中主要就是调用readSource
,这里主要是通过HttpUrlSource.read
读取网络数据,然后通过FileCache
写入到本地缓存在缓存结束后同样也会发送一个通知通知自己已经缓存完了,回调由外界控制
同时调用ProxyCache.read
的线程现在在做什么?在看下read方法里面的代码:
到此整个读取数据缓存数据的流程就結束了。
写的比较长先介绍了下Androidvideocache路径
的基本原理,然后手绘了张代码框架图方便全局了解,然后看了下使用方法最后分析了主要流程的源码。简单说起来就是通过代理策略拦截网络请求,从本地拿出数据给到播放器后面如果有时间可以再简单说下本地缓存的一些玳码。
如果本文对你有帮助欢迎关注哈。
感谢@右倾倾希望你能少点痛苦,平平安安快快乐乐。
下车了提前祝大家新年快乐!