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

Detect required disk space for ExoPlayer offline download

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

由于我们谈论的是自适应流,而不是单个 mp4 文件,因此学习所需的磁盘 space 似乎并不简单。我对一个相当准确的估计很好,但我什至不能想出那个。当然,它必须在用户选择要下载的比特率之后和实际下载之前可用。 Download class 有 contentLength 变量,但它似乎为零(在自适应流上?)。 DownloadRequeststreamKeys 作为选定流的索引,但我还没有找到可以使用它们的地方。从我们自己的元数据中,我可以在几秒钟内找出流的长度,所以我想我正在寻找三种替代方案:

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

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

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