SWIFT: Советы по ускорению загрузки видео? - PullRequest
1 голос
/ 20 апреля 2020

У меня есть приложение iOS, которое загружает видео из Firebase (Cloud Firestore) с помощью канала, похожего на Instagram / TikTok. Тем не менее, я не могу получить доступ к видео, пока пользователь не прокрутит его. Любые советы будут очень полезны. Как TikTok это делает? Сохраняют ли они целую кучу видео в файл в фоновом режиме при загрузке?

Мой текущий VideoDownloadManager:

  1. Проверяет, загружено ли уже видео во временный кэш или локальный файл, и если not:
  2. Загружает URL-адрес видео (смотрите downloadURL в Firebase)
  3. Возвращает URL-адрес видео для немедленного использования (до воспроизведения у него все еще есть некоторая задержка для буферизации)
  4. Сохраняет URL-адрес видео во временном кэше (в случае, если пользователь прокручивает и прокручивает назад)
  5. Начинает записывать видео в файл и удаляет видео из временного кэша по завершении

При текущей настройке видео играть эффективно после того, как они загружены. Но если видео еще не загружено, и пользователь прокручивает его, это занимает слишком много времени для (# 1/2), указанного выше, для завершения и буферизации достаточно для воспроизведения. Я уже использую OperationQueues и расставляю приоритеты текущего видео над любыми другими фоновыми видео - но это все еще недостаточно быстро.

Видео TikTok почти всегда легко доступны в процессе прокрутки пользователем. В чем секрет?

Спасибо за помощь!

1 Ответ

0 голосов
/ 20 апреля 2020

Вы действительно ничего не можете сделать в своем коде, чтобы ускорить загрузку из облачного хранилища. Проблема в том, что Cloud Storage - это не платформа для потоковой передачи видео, а платформа для хранения объектов. Он оптимизирован для загрузки и выгрузки объектов, обычно все сразу.

Другие приложения, которые, по-видимому, загружают видео быстрее, вероятно, используют специальную технологию потоковой передачи видео и, возможно, также визуализируют маленькое уменьшенное изображение, прежде чем видео начнет передаваться в скорость, которая лучше всего подходит для клиентского приложения. Облачное хранилище не сделает ничего из этого за вас. Вы должны посмотреть на сервис, который оптимизирован для потокового видео. (Рекомендации по программному обеспечению и услугам не входят в число c для переполнения стека.)

...