ExoPlayer имеет приятные функции для загрузки видео для последующего автономного использования. Он также предоставляет CacheEvictor для выбора поведения, когда на диске становится мало. Тем не менее, я хотел бы предоставить пользователю возможность очистить некоторое пространство перед началом загрузки, или возможность выбрать более низкое качество при меньшем потреблении пространства.
Поскольку речь идет об адаптивных потоках, а не об отдельных файлах mp4Изучение необходимого дискового пространства, кажется, не тривиально. Я в порядке с достаточно точной оценкой, но даже не могу придумать. Естественно, он должен быть доступен после того, как пользователь выбрал битрейт (ы) для загрузки, и до фактической загрузки. Класс Download
имеет переменную contentLength
, но кажется, что он равен нулю (для адаптивных потоков?). DownloadRequest
имеет streamKeys
в качестве индексов для выбранных потоков, но я не нашел места, где бы я мог их использовать. Из наших собственных метаданных я могу узнать длину потока в секундах, поэтому я думаю, что я ищу три альтернативы:
- способ получения оценочных байтов для начальной загрузки,
- способ получить выбранные битрейты всех потоков, связанных с выбранными streamKeys или
- способ получить сам ExoPlayer, чтобы не начинать загрузку, если не хватает места
из которого я предполагаю, что средний является наиболее вероятным. Есть идеи или знания?