我正在构建一个Android应用程序,用户可以在其中查看一些列出的视频。这些视频是某些频道的类别。一旦用户选择了一个频道,我想在缓存中缓存与该频道相关的所有视频,以便在没有互联网的情况下播放视频。
任何人都可以在不玩游戏的情况下更多地了解视频缓存,请帮助我了解如何实现此任务。
现在我能够缓存视频如果它是使用某个库播放的。
答案 0 :(得分:2)
我找到了以下工作解决方案,用于在后台缓存视频(单个/多个),不需要player/video_view
。使用AsyncTaskRunner
在您的gradle文件中添加以下内容
compile 'com.danikula:videocache:2.7.0'
由于我们只需要启动预取,无需在
while
循环中执行任何操作。或者我们可以使用
ByteArrayOutputStream
将数据写入磁盘。
URL url = null;
try {
url = new URL(cachingUrl(cachingUrl));
InputStream inputStream = url.openStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int length = 0;
while ((length = inputStream.read(buffer)) != -1) {
//nothing to do
}
} catch (IOException e) {
e.printStackTrace();
}
lib的重要代码。做
使用以下代码在应用程序类中创建静态实例
private HttpProxyCacheServer proxy;
public static HttpProxyCacheServer getProxy(Context context) {
Applications app = (Applications) context.getApplicationContext();
return app.proxy == null ? (app.proxy = app.newProxy()) : app.proxy;
}
private HttpProxyCacheServer newProxy() {
//return new HttpProxyCacheServer(this);
return new HttpProxyCacheServer.Builder(this)
.cacheDirectory(CacheUtils.getVideoCacheDir(this))
.maxCacheFilesCount(40)
.maxCacheSize(1024 * 1024 * 1024)
.build();
}
在您的活动中编写以下代码以传递url
public String cachingUrl(String urlPath) {
return Applications.getProxy(this).getProxyUrl(urlPath, true);
}