N
N
nesnes2018-07-09 12:57:54
Android
nesnes, 2018-07-09 12:57:54

Android. How to implement video upload to a server with weak internet?

how to implement uploading video to the server if the Internet is weak. Somehow, in parts or from a weak Internet, nothing saves?

Answer the question

In order to leave comments, you need to log in

4 answer(s)
Сергей Тихонов, 2018-07-09
@tumbler

Как ни крути, интернет на мобилке - он практически всегда слабый. Надо уметь с этим жить. Для этого многие реализуют "докачку": при обнаружении разрыва соединения клиент спрашивает у сервера "на чем остановились" и продолжает загрузку видео с указанной точки. Нужна поддержка и на клиенте, и на сервере.
Вот эти ребята предлагают стандартизированный протокол с кучей библиотек по обе стороны интернета. Google, Vimeo реализуют "догрузку" по-своему. Есть еще resumable.js, но он работает с блоками и на мой взгляд слишком ненадежен из-за своей сложности.

Александр Таратин, 2018-07-09
@Taraflex

https://www.resilio.com/ (бывший bittorrent sync)
или его аналоги
https://syncthing.net/

P
Philipp, 2018-07-10
@zoonman

От слабого интернета не спасает ничего, кроме сильного интернета.
А теперь без шуток. В народе под слабым интернетом понимают медленный и ненадежный. Т.е. низкие скорости, ошибки передачи и обрывы в порядке вещей. Обычно такое на медленных GPRS/2G/3G соединениях. Встречается также на старых телефонных линиях, когда ADSL частенько падает.
В таких случаях загрузка видео организуется простым и надежным методом - разбивкой на части и подтверждением целостности частей.
Грубо говоря, берете файл, отрезаете от него фрагментик в 64кБ и отправляете на сервер. Если сервер за разумное время не ответил (например за минуту), рвете соединение и пытаетесь снова. Вместе с кусочком отправляете md5 этого кусочка. Сервер при приеме кусочка точно также считает md5. Если суммы совпадают, то тогда фрагментик записывается в нужное место файла.
Когда отправляются фрагменты, каждый пакет несет в себе информацию:
Первый фрагмент дополнительно несет в себе информацию
Сервер обязан отслеживать какие части файла были загружены.
При таком дизайне клиент может работать при любой скорости сети и загрузка будет достаточно надежной.
Кроме этого, клиент может подстраиваться под скорость и адаптировать размер фрагментов.
Сервер должен быть достаточно умным, чтобы контролировать гонки и уметь закрывать открытые зависшие соединения.
Размер фрагментов должен быть регламентирован для предотвращения DOS атак.
Кроме этого, в пакеты с данными неплохо бы добавлять какую-нибудь подпись и соединение должно быть авторизованным.

E
Ezhyg, 2018-07-09
@Ezhyg

Что такое "слабый" в вашем понимании? Если медленный, ну... сменить провайдера или забить и просто ждать выгрузки дольше. Если "падучий", отправить жалобу провайдеру, проверить/заменить оборудование, пользоваться сервисами поддерживающими дозакачку - те же облачные клиенты, я.диск, диск.google, mega или более-менее современные браузеры.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question