Разрабатываю плеер для просмотра Ютуба без задержек: готова демо-версия!

Всем привет и всем огромное спасибо за кучу обратной связи и откликов в тг боте!

Кратко: Демо можно посмотреть здесь: https://ricktube.ru/
Просмотр доступен для всех без регистрации, впн и любых телодвижений
Выкладывать видео можно только после регистрации, открою ее чуть позже

Сейчас просьба заценить загруженные видео и отписаться, быстро ли грузит, насколько удобно пользоваться и есть ли пожелания
Пользоваться можно в веб-версии на пк и в мобильной версии
Ссылка на предыдущий пост:
Разрабатываю плеер для просмотра Ютуба без задержек — присоединяйтесь к тестированию!
тг бот, в котором можно общаться с разработчиком(то бишь мной): https://t.me/noslowyoutube_bot

Краткая часть закончена, дальше мини-история о том, с чем столкнулся, как работает сейчас и о планах на будущее
------------

Во-первых, технология, которая может получать данные не только с серверов, но с клиентов, проигрывающих видео в данный момент опробована. Написал простой код, зашел с двух клиентов, один загрузил видео с сервера - другой частично с клиента, частично с сервера. Налицо вариант для оптимизации нагрузки на сеть и на инфраструктуру.
Раньше: каждый клиент из Челябинска бегает до мск за видео.
Сейчас: бегает только первый клиент, остальные получают пакеты по кусочкам от самого ближайшего и выгодного места. Работает тем лучше, чем больше людей смотрят одно видео, как пример трансляции спорта.

Факт 2: Пообщавшись в комментах к предыдущему посты и порыскав самостоятельно в сети, нашел варианты реализации этой технологии, которые можно дорабатывать. Тут начинается самое веселое :)

Факт 3. Финалиста вы можете видеть по ссылке https://ricktube.ru/. Самый достойный вариант из всех. НО! Все еще очень проблемный и требующий постоянного дописывания/дочинивания
Например уже пришлось пересобрать с поддержкой обработки на видеокартах, иначе очень тяжело обрабатывает

Итак, что есть на данный момент:
1. Интерфейс, привычный как у Ютуба
2. Проигрыватель, привычный с Ютуба
3. Панель рекомендаций, привычная с Ютуба
4. Возможность смотреть без регистрации, впн и провисаний
5. Возможность делиться видео с друзьями
6. Возможность скачивать видео прям с сайта
7. Комментарии, лайки, дизлайки, плейлисты, выбор качества, автоподстройка качества
8. В мобильной версии перемотка двойным тапом на экран справа или слева
В общем довольно классно :)
Основная проблема сейчас - видео нужно импортировать с Ютуба руками. Происходит в 3 этапа
1. Вы нажимаете на кнопку "Опубликовать" справа сверху
2. Вставляете ссылка на видео с Ютуба
3. Сайт грузит метаданные (название, описание, тэги) - правите, если надо, жмете ок.
4. Сайт загружает в фоне видео с Ютуба на сервер - можно смотреть (будет пометка, что видео неоптимизированно, возможны просадки, загрузка будет только с сервера)
5. Сайт в фоне перекодирует из mp4 в HLS (спец. формат для стриминга) - можно смотреть еще быстрее, теперь передача возможна от клиента к клиенту, пометка убрана
6. Сайт перевозит транскодированный файл в более быстрое хранилище для еще более шустрого доступа
По таймингам:
видео <30 мин: импорт (можно смотреть): 2 мин, перекодировка: 7 мин
видео 1-2ч: импорт (можно смотреть): 10 мин, перекодировка: 15 мин
видео 2ч+: импорт (можно смотреть): 15 мин, перекодировка: 18 мин
Процесс делается один раз, если вы или другой пользователь сайта откроете видео - все уже будет оптимизировано для просмотра
Выглядит окно так:

Разрабатываю плеер для просмотра Ютуба без задержек: готова демо-версия! YouTube, Блокировка YouTube, Длиннопост

Внизу указаны скорость скачивания и отдачи и количество человек, просматривающих вместе с вами

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

Следующие цели такие:
1. Открытие регистрации и возможности загружать/импортировать свои видео
2. Добавить поддержку Chromecast и AirPlay, чтоб можно было смотреть на телевизорах
3. Переписать серверную часть, сделав ее масштабируемой
4. Добавить возможность сквозного поиска из ютуба и прозрачного просмотра (если уже загружено - открыть с сервера, если еще нет - скачивания из ютуба на сервер и прямая трансляция клиенту, чтоб не ждал)

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

Напоминаю контакты:
Демо можно посмотреть здесь: https://ricktube.ru/
тг бот, в котором можно общаться с разработчиком(то бишь мной): https://t.me/noslowyoutube_bot

Пасхалка для тех, кто дочитал до конца, мой сервак, который обрабатывает и будет обрабатывать то, что вы смотрите:

Разрабатываю плеер для просмотра Ютуба без задержек: готова демо-версия! YouTube, Блокировка YouTube, Длиннопост