我正在尝试使用ExoPlayer通过http播放视频。我想在视频加载后保存视频并从缓存中播放它。如何实现缓存和缓存回放?可以给我任何样品。
发布于 2015-10-26 20:18:32
您可以使用使用缓存和dataSource创建的cacheDataSource。此cacheDataSource随后由ExtractorSampleSource.Below使用,这是audioRenderer的代码,类似地可以为videoRender完成;传递给exoplayerInstance.prepare(渲染器)。
Cache cache = new SimpleCache(mCtx.getCacheDir(), new LeastRecentlyUsedCacheEvictor(1024 * 1024 * 10));
DataSource dataSource = new DefaultUriDataSource(mCtx, "My Player");
CacheDataSource cacheDataSource = new CacheDataSource(cache, dataSource, false, false);
Allocator allocator = new DefaultAllocator(BUFFER_SEGMENT_SIZE);
ExtractorSampleSource extractorSampleSource = new ExtractorSampleSource(trackURI, cacheDataSource, allocator, BUFFER_SEGMENT_COUNT*BUFFER_SEGMENT_SIZE, new Mp3Extractor());
MediaCodecAudioTrackRenderer audioTrackRenderer = new MediaCodecAudioTrackRenderer(extractorSampleSource);发布于 2015-03-29 18:05:41
您使用的是什么协议? mpeg-dash还是纯http?
您可以覆盖HttpDataSource并将传入的字节写入文件,当再次播放时,检查文件是否存在于所需的位置,并从您的文件而不是HttpDataSource更改提供给播放器的InputStream。
发布于 2019-11-03 15:23:49
我使用exoplayer和这个库:https://github.com/danikula/AndroidVideoCache,它可以帮助你缓存来自资源(网址,文件)的视频……
这是我的示例代码:
String mediaURL = "https://my_cool_vid.com/vi.mp4";
SimpleExoPlayer exoPlayer = ExoPlayerFactory.newSimpleInstance(getContext());
HttpProxyCacheServer proxyServer = HttpProxyCacheServer.Builder(getContext()).maxCacheSize(1024 * 1024 * 1024).build();
String proxyURL = proxyServer.getProxyUrl(mediaURL);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getContext(),
Util.getUserAgent(getContext(), getActivity().getApplicationContext().getPackageName()));
exoPlayer.prepare(new ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(proxyURL)););https://stackoverflow.com/questions/26095261
复制相似问题