首页 > 解决方案 > 使用 CacheUtil 进行 HLS 缓存

问题描述

我们使用 Exoplayer 2.9.4 和 HLS 视频格式。尝试使用 CacheUtil 的缓存方法手动缓存下一个视频时,会发生 EOFException,但它在 mp4 上运行良好。可能是因为缓存播放列表文件而不是视频文件。问题是是否可以使用 CacheUtil 来缓存 HLS 格式?如果没有,我们应该使用什么?

这是一个测试项目:

https://github.com/Ortyom/ProblemHlsCacheExample/tree/master/app/src/main/java/com/example/hlscachesample

从设备捕获的完整错误报告

com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.io.EOFException at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.read(DefaultHttpDataSource.java:362) at com.google.android.exoplayer2.upstream .cache.CacheDataSource.read(CacheDataSource.java:304) 在 com.google.android.exoplayer2.upstream.TeeDataSource.read(TeeDataSource.java:71) 在 com.google.android.exoplayer2.upstream.cache.CacheDataSource.read (CacheDataSource.java:304) 在 com.google.android.exoplayer2.upstream.cache.CacheUtil.readAndDiscard(CacheUtil.java:307) 在 com.google.android.exoplayer2.upstream.cache.CacheUtil.cache(CacheUtil.java :203) 在 com.google.android.exoplayer2.upstream.cache.CacheUtil.cache(CacheUtil.java:124) 在 com.example.hlscachesample.SimpleVideoPreCacher$cache$1.run(SimpleVideoPreCacher.kt:42) 在 java.util 。同时。ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:760) 原因:java.io .EOFException at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.readInternal(DefaultHttpDataSource.java:700) at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.read(DefaultHttpDataSource.java:360) ... 10 更多还有 10 个还有 10 个

标签: androidcachingkotlinexoplayer2.x

解决方案


推荐阅读