
RFTube: YouTube без VPN — свой стриминговый стек с нуля
Задача звучала просто: сделать так, чтобы видео открывалось и не тормозило. За этим оказался полный стек — от подбора инфраструктуры до собственного плеера и канала доставки обновлений в обход сторов.



Плеер: до 1080p, перемотка в любую точку без перекодирования. · Подписки без рекламных вставок. · Скачанное для офлайна.
Проблема
Видео на устройстве пользователя не воспроизводится или сваливается в 144p. Интерфейс сервиса при этом открывается — значит, дело в потоке с видеофайлами, а не в сети целиком. Решения на стороне пользователя (настройки, переустановка, смена браузера) на этот поток не влияют.
Что сделали
- Доставка потока через собственные серверы: клиент обращается только к нам, дальше видео приходит обычным потоком. VPN на устройстве не требуется.
- Свой HLS-движок: границы сегментов берём из индекса исходного файла (читаем ~256 КБ головы), строим полный манифест сразу и копируем сегменты без перекодирования. Перемотка в любую точку, качество 1:1, процессор почти не нагружен.
- Подбор инфраструктуры под задачу: часть провайдеров отпала на этапе проверки — их адреса не подходили для стабильной отдачи. Это выяснялось замерами до оплаты, а не после.
- Ускорение доставки в РФ: BBR, HTTP/3, кэш извлечения и прогрев каталога — первый показ мгновенный.
- Публикация в AppGallery через API: сборка, загрузка и отправка на проверку одной командой, без ручных шагов в консоли.
- Обновления вне сторов: приложение обновляет себя само, что снимает зависимость от скорости модерации.
Инженерные решения, которые переиспользуются
Движок перемотки, схема доставки, автопубликация в стор и оптимизатор лендингов — общие для обоих наших продуктов. Один и тот же код обслуживает два приложения с разной аудиторией: детское и взрослое, из одной кодовой базы собираются разные варианты.
Стек
Нужен похожий проект?
Берём задачу целиком: продукт, приложение, backend, инфраструктуру и публикацию — и поддерживаем после запуска.
Обсудить проект