2017-03-16 66 views
1

在做了一些關於使用exoplayer緩存視頻/音頻內容的工作之後,我覺得這裏給出的答案是Jacek Using cache in ExoPlayer是對無界範圍請求實施緩存而不是使用內置Exocache的正確方法支持https://github.com/google/ExoPlayer/issues/420 & https://github.com/google/ExoPlayer/issues/57。 但他在配置OkHttp &緩存請求時沒有說任何事情。使用Exoplayer的VOD緩存2.2

任何人都可以提供關於如何配置緩存請求的okhttp &的一些鏈接。

+0

我把你都面臨同樣的問題..沒有得到任何正式的文件或示例配置okhttp緩存。 – comeback4you

+0

@ comeback4you那麼爲VOD做了怎樣的緩存? –

+0

還沒有,仍然可以找到 – comeback4you

回答

0

通過使buildDataSourceFactory配置更改如下,我們可以緩存視頻內容

private DataSource.Factory buildDataSourceFactory(final boolean useBandwidthMeter) { 
// return new DefaultDataSourceFactory(this, useBandwidthMeter ? BANDWIDTH_METER : null, 
//  buildHttpDataSourceFactory(useBandwidthMeter)); 
    return new DataSource.Factory() { 
     @Override 
     public DataSource createDataSource() { 
     LeastRecentlyUsedCacheEvictor evictor = new LeastRecentlyUsedCacheEvictor(100 * 1024 * 1024); 
     SimpleCache simpleCache = new SimpleCache(new File(getCacheDir(), "media_cache"), evictor); 
     return new CacheDataSource(simpleCache, buildMyDataSourceFactory(useBandwidthMeter).createDataSource(), 
       CacheDataSource.FLAG_BLOCK_ON_CACHE | CacheDataSource.FLAG_CACHE_UNBOUNDED_REQUESTS, 
       10 * 1024 * 1024); 
     } 
    }; 
    } 

    private DefaultDataSource.Factory buildMyDataSourceFactory(boolean useBandwidthMeter) { 
    return new DefaultDataSourceFactory(PlayerActivity.this, userAgent, useBandwidthMeter ? BANDWIDTH_METER : null); 
    }