Определите необходимое дисковое пространство для автономной загрузки ExoPlayer - PullRequest
1 голос
/ 10 октября 2019

ExoPlayer имеет приятные функции для загрузки видео для последующего автономного использования. Он также предоставляет CacheEvictor для выбора поведения, когда на диске становится мало. Тем не менее, я хотел бы предоставить пользователю возможность очистить некоторое пространство перед началом загрузки, или возможность выбрать более низкое качество при меньшем потреблении пространства.

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

  • способ получения оценочных байтов для начальной загрузки,
  • способ получить выбранные битрейты всех потоков, связанных с выбранными streamKeys или
  • способ получить сам ExoPlayer, чтобы не начинать загрузку, если не хватает места

из которого я предполагаю, что средний является наиболее вероятным. Есть идеи или знания?

1 Ответ

0 голосов
/ 24 октября 2019

Как я указывал в вопросе, с помощью длины и битрейта можно рассчитать разумную оценку. Получение длины должно быть тривиальным и может зависеть от реализации, для получения выбранного битрейта (или помощи в выборе битрейта) будут полезны следующие классы и вызовы методов (параметры и детали исключены):

DownloadHelper.getMappedTrackInfo().getRenderedType() 
DownloadHelper.getMappedTrackInfo().getRenderedType() 
DownloadHelper.getMappedTrackInfo().getTrackGroups().get().getFormat().bitrate 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...