Я использую ExoPlayer для воспроизведения видео по http. И я хочу сохранить видео после загрузки видео и воспроизвести его из кеша. Как реализовать кеш и воспроизведение из кеша? Могу дать мне образцы.Кэш ExoPlayer
ответ
Какой протокол вы используете mpeg-dash или обычный http.
Вы можете переопределить HttpDataSource и записать входящие байты в файл, а при повторном воспроизведении проверьте, существует ли файл в нужном месте и измените InputStream, поданный на плеер из вашего файла вместо HttpDataSource.
Переопределение HttpDataSource - это неправильный подход, поскольку ExoPlayer имеет целевые классы для реализации кэша. Например, CacheDataSource. Я хотел бы получить правильный способ использования этих классов. – fisher3421
Вы используете cacheDataSource, созданный с использованием кеша и dataSource. Этот 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);
Я не думаю, что по умолчанию вы можете сделать это легко. Это с открытым исходным кодом. Вы можете разблокировать его и изменить местоположение кэша. – tasomaniac
У меня такая же проблема. вы нашли способ реализовать это? –
@ fisher3421 у вас есть решение, которое я тоже ищу. –