检测ExoPlayer脱机下载所需的磁盘空间

时间:2019-10-10 13:26:23

标签: android exoplayer offline-caching exoplayer2.x

ExoPlayer具有不错的功能,可以下载视频供以后脱机使用。它还提供CacheEvictor,用于在磁盘空间不足时选择行为。但是,我想为用户提供甚至在开始下载之前就清理一些空间的可能性,或者有机会选择质量较差的产品以减少空间消耗。

由于我们在谈论自适应流,而不是单个mp4文件,因此了解所需的磁盘空间似乎并非易事。我可以提供合理准确的估算,但即使这样我也无法提出。自然,它必须在用户选择要下载的比特率之后且在实际下载之前可用。 Download类具有contentLength变量,但似乎为零(在自适应流上?)。 DownloadRequest使用streamKeys作为选定流的索引,但是我没有找到可以使用它们的地方。从我们自己的元数据中,我可以找到以秒为单位的流的长度,所以我想我正在寻找三种选择:

  • 一种获取估计的用于开始下载的字节的方法,
  • 一种获取与所选streamKeys或
  • 相关的所有流的所选比特率的方法
  • 让ExoPlayer本身在空间不足时不开始下载的方法

我认为最有可能使用的是

。有任何想法或知识吗?

1 个答案:

答案 0 :(得分:0)

正如我在问题中指出的那样,使用长度和比特率可以计算出合理的估计值。获取长度应该是微不足道的,并且可能是特定于实现的,为了获得以下选定的比特率(或帮助选择比特率),以下类和方法调用将非常有用(不包括参数和详细信息):

DownloadHelper.getMappedTrackInfo().getRenderedType() 
DownloadHelper.getMappedTrackInfo().getRenderedType() 
DownloadHelper.getMappedTrackInfo().getTrackGroups().get().getFormat().bitrate