ExoPlayer缓存

mol*_*kin 14 android exoplayer

我正在努力使用ExoPlayer通过http播放视频.我想在视频加载后保存视频并从缓存中播放.如何从缓存实现缓存和回放?可以给我任何样品.

Sak*_*ham 5

您使用使用cache和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);
Run Code Online (Sandbox Code Playgroud)


Dhe*_*han 2

您使用什么协议 mpeg-dash 或纯 http。

您可以覆盖 HttpDataSource 并将传入字节写入文件,并在再次播放时检查文件是否存在于所需位置,并更改从文件而不是 HttpDataSource 提供给播放器的 InputStream。

  • 重写 HttpDataSource 是错误的方法,因为 ExoPlayer 有用于缓存实现的目标类。例如缓存数据源。我想找到使用此类的正确方法。 (2认同)