2014-09-29 29 views
12

Sto cercando di utilizzare ExoPlayer per riprodurre video su http. E voglio salvare il video dopo che il video è stato caricato e riprodurlo dalla cache. Come implementare la cache e la riproduzione dalla cache? Posso darmi qualche campione.ExoPlayer cache

+0

Non penso ci sia un comportamento predefinito che è possibile farlo facilmente. È open source. Puoi biforcare e modificare il percorso di download della cache. – tasomaniac

+0

Ho lo stesso problema. trovi il modo di implementarlo? –

+0

@ fisher3421 hai qualche soluzione che sto cercando anche per me. –

risposta

2

Quale protocollo si utilizza mpeg-dash o semplice http.

È possibile eseguire l'override di HttpDataSource e scrivere byte in entrata in un file e durante la riproduzione controllare se il file esiste nella posizione desiderata e modificare InputStream alimentato al lettore dal file anziché HttpDataSource.

+2

L'override di HttpDataSource è un approccio errato perché ExoPlayer ha classi di destinazione per l'implementazione della cache. Ad esempio CacheDataSource. Mi piacerebbe avere il modo giusto di usare questo corso. – fisher3421

5

Si utilizza cacheDataSource creata utilizzando cache e dataSource. Questo cacheDataSource viene quindi utilizzato da ExtractorSampleSource.Below è il codice per audioRenderer, analogamente può essere fatto per videoRender; passando a exoplayerInstance.prepare (renderer).

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); 
+0

è questa l'intera implementazione per far funzionare la cache? L'ho implementato, ma stampando 'cache.getCacheSpace()' mostra 0 indipendentemente da ciò che faccio. Qualche idea o suggerimento per riempire la cache? – welshk91

+1

Funziona solo con DASH. Vedi https://github.com/google/ExoPlayer/issues/420 – aeracode

Problemi correlati