Задать вопрос

Android. Как реализовать загрузку видео на сервер со слабым интернетом?

как реализовать заливку видео на сервер если слабый интернет. Как то по частям или от слабого интернета ничего не спасает?
  • Вопрос задан
  • 513 просмотров
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
tumbler
@tumbler
бекенд-разработчик на python
Как ни крути, интернет на мобилке - он практически всегда слабый. Надо уметь с этим жить. Для этого многие реализуют "докачку": при обнаружении разрыва соединения клиент спрашивает у сервера "на чем остановились" и продолжает загрузку видео с указанной точки. Нужна поддержка и на клиенте, и на сервере.
Вот эти ребята предлагают стандартизированный протокол с кучей библиотек по обе стороны интернета. Google, Vimeo реализуют "догрузку" по-своему. Есть еще resumable.js, но он работает с блоками и на мой взгляд слишком ненадежен из-за своей сложности.
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
https://www.resilio.com/ (бывший bittorrent sync)
или его аналоги
https://syncthing.net/
Ответ написан
zoonman
@zoonman
⋆⋆⋆⋆⋆
От слабого интернета не спасает ничего, кроме сильного интернета.

А теперь без шуток. В народе под слабым интернетом понимают медленный и ненадежный. Т.е. низкие скорости, ошибки передачи и обрывы в порядке вещей. Обычно такое на медленных GPRS/2G/3G соединениях. Встречается также на старых телефонных линиях, когда ADSL частенько падает.

В таких случаях загрузка видео организуется простым и надежным методом - разбивкой на части и подтверждением целостности частей.
Грубо говоря, берете файл, отрезаете от него фрагментик в 64кБ и отправляете на сервер. Если сервер за разумное время не ответил (например за минуту), рвете соединение и пытаетесь снова. Вместе с кусочком отправляете md5 этого кусочка. Сервер при приеме кусочка точно также считает md5. Если суммы совпадают, то тогда фрагментик записывается в нужное место файла.

Когда отправляются фрагменты, каждый пакет несет в себе информацию:
  • идентификатор файла
  • начало фрагмента
  • длина фрагмента
  • md5 сумма от фрагмента


Первый фрагмент дополнительно несет в себе информацию
  • идентификатор файла
  • имя файла
  • размер файла
  • md5 файла


Сервер обязан отслеживать какие части файла были загружены.

При таком дизайне клиент может работать при любой скорости сети и загрузка будет достаточно надежной.
Кроме этого, клиент может подстраиваться под скорость и адаптировать размер фрагментов.

Сервер должен быть достаточно умным, чтобы контролировать гонки и уметь закрывать открытые зависшие соединения.
Размер фрагментов должен быть регламентирован для предотвращения DOS атак.
Кроме этого, в пакеты с данными неплохо бы добавлять какую-нибудь подпись и соединение должно быть авторизованным.
Ответ написан
Комментировать
Ezhyg
@Ezhyg
Что такое "слабый" в вашем понимании? Если медленный, ну... сменить провайдера или забить и просто ждать выгрузки дольше. Если "падучий", отправить жалобу провайдеру, проверить/заменить оборудование, пользоваться сервисами поддерживающими дозакачку - те же облачные клиенты, я.диск, диск.google, mega или более-менее современные браузеры.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы