检测 ExoPlayer 离线下载所需的磁盘 space
Detect required disk space for ExoPlayer offline download
ExoPlayer 具有很好的下载视频供以后离线使用的功能。它还提供 CacheEvictor,用于在磁盘 space 变低时选择行为。但是,我想为用户提供在开始下载之前清理一些 space 的可能性,或者有机会选择较差的质量以减少 space 消耗。
由于我们谈论的是自适应流,而不是单个 mp4 文件,因此学习所需的磁盘 space 似乎并不简单。我对一个相当准确的估计很好,但我什至不能想出那个。当然,它必须在用户选择要下载的比特率之后和实际下载之前可用。 Download
class 有 contentLength
变量,但它似乎为零(在自适应流上?)。 DownloadRequest
有 streamKeys
作为选定流的索引,但我还没有找到可以使用它们的地方。从我们自己的元数据中,我可以在几秒钟内找出流的长度,所以我想我正在寻找三种替代方案:
- 一种获取开始下载的估计字节数的方法,
- 一种获取与选定流密钥相关的所有流的选定比特率的方法或
- 如果没有足够的内容,让 ExoPlayer 本身不开始下载的方法 space
我认为中间那个最有可能可用。有什么想法或知识吗?
正如我在问题中指出的那样,根据长度和比特率可以计算出合理的估计值。获取长度应该是微不足道的,并且可能是特定于实现的,用于在 类 之后获取选定的比特率(或帮助选择比特率)并且方法调用将很有用(不包括参数和详细信息):
DownloadHelper.getMappedTrackInfo().getRenderedType()
DownloadHelper.getMappedTrackInfo().getRenderedType()
DownloadHelper.getMappedTrackInfo().getTrackGroups().get().getFormat().bitrate
ExoPlayer 具有很好的下载视频供以后离线使用的功能。它还提供 CacheEvictor,用于在磁盘 space 变低时选择行为。但是,我想为用户提供在开始下载之前清理一些 space 的可能性,或者有机会选择较差的质量以减少 space 消耗。
由于我们谈论的是自适应流,而不是单个 mp4 文件,因此学习所需的磁盘 space 似乎并不简单。我对一个相当准确的估计很好,但我什至不能想出那个。当然,它必须在用户选择要下载的比特率之后和实际下载之前可用。 Download
class 有 contentLength
变量,但它似乎为零(在自适应流上?)。 DownloadRequest
有 streamKeys
作为选定流的索引,但我还没有找到可以使用它们的地方。从我们自己的元数据中,我可以在几秒钟内找出流的长度,所以我想我正在寻找三种替代方案:
- 一种获取开始下载的估计字节数的方法,
- 一种获取与选定流密钥相关的所有流的选定比特率的方法或
- 如果没有足够的内容,让 ExoPlayer 本身不开始下载的方法 space
我认为中间那个最有可能可用。有什么想法或知识吗?
正如我在问题中指出的那样,根据长度和比特率可以计算出合理的估计值。获取长度应该是微不足道的,并且可能是特定于实现的,用于在 类 之后获取选定的比特率(或帮助选择比特率)并且方法调用将很有用(不包括参数和详细信息):
DownloadHelper.getMappedTrackInfo().getRenderedType()
DownloadHelper.getMappedTrackInfo().getRenderedType()
DownloadHelper.getMappedTrackInfo().getTrackGroups().get().getFormat().bitrate