检测 ExoPlayer 离线下载所需的磁盘空间



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

由于我们谈论的是自适应流,而不是单个 mp4 文件,因此了解所需的磁盘空间似乎并非易事。我对一个相当准确的估计很好,但即使这样我也想不出来。当然,它必须在用户选择要下载的比特率之后和实际下载之前可用。DownloadcontentLength变量,但它似乎为零(在自适应流上?DownloadRequeststreamKeys为所选流的索引,但我还没有找到任何可以使用它们的地方。从我们自己的元数据中,我可以在几秒钟内找到流的长度,所以我想我正在寻找三种选择:

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

我认为中间的最有可能可用。有什么想法或知识吗?

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

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

最新更新