Android Video Cache Library делает то, что вы хотите. Выполните приведенный ниже шаг для кэширования своих видео.
шаг 1: скомпилируйте 'com.danikula: videocache: 2.7.1'
шаг 2: сохраните общий прокси в своем классе приложения
public class MyApplication extends Application {
private HttpProxyCacheServer proxy;
public static HttpProxyCacheServer getProxy(Context context) {
MyApplication app = (MyApplication) context.getApplicationContext();
return app.proxy == null ? (app.proxy = app.newProxy()) : app.proxy;
}
private HttpProxyCacheServer newProxy() {
return new HttpProxyCacheServer.Builder(this)
.maxCacheSize(1024 * 1024 * 1024)
.build();
//return new HttpProxyCacheServer(this);
}
}
шаг 3: поместите класс MyApplication в файл манифеста, например
<application
android:name=". MyApplication">
.
.
.
</application>
шаг 4: используйте URL-адрес прокси-сервера вместо исходного URL-адреса для добавления кэширования
HttpProxyCacheServer proxy = MyApplication.getProxy(activity);
String proxyUrl = proxy.getProxyUrl(VIDEO_URL);
videoView.setVideoPath(proxyUrl);
, если вы используете exoplayer
HttpProxyCacheServer proxy = getProxy(activity);
String proxyUrl = proxy.getProxyUrl(VIDEO_URL);
PlayerView playerView = findViewById(R.id.video_view);
ExoPlayer player = ExoPlayerFactory.newSimpleInstance(VideoActivity.this,
new DefaultRenderersFactory(this),
new DefaultTrackSelector());
MediaSource mediaSource = buildMediaSource(proxyUrl);
player.prepare(mediaSource, true, false);
playerView.setPlayer(player);
Happy Coding:)