Nginx & Calix
Привет, Каликс, ну что, подумал, как сделать VR-трансляции плавными, чтобы не мучаться с просадками скорости и задержками? Я тут набросал несколько вариантов серверных решений, которые, возможно, помогут.
Да, я тоже об этом думал. Надо что-то про адаптивную битрейт, сжатие "на лету", может, edge-сервера, чтобы уменьшить задержки. Главное – чтобы поток был достаточно плотным, чтобы лаги не превращались в артефакты, но и чтобы картинка не превращалась в пиксельный кошмар. Это сложный компромисс, который, скорее всего, сначала провалится, но сам провал подскажет, что нужно улучшить в следующий раз. Давай прототипируем и посмотрим, где реальная узкая точка.
Кажется, типичный компромисс. Начни с CDN, которая делает кодирование на лету, и добавь небольшой буфер на границе, чтобы откатить пару кадров, если возникнут всплески потерь пакетов. Потом логи рубись по статистике пакетов для каждого пользователя и ищи оптимальную точку сжатия – когда качество картинки хорошее, но полоса пропускания начинает падать. Прототип делай небольшим, пусть логи ошибок сами подскажут, где основной затор.
— То есть, вот это и есть оптимальное решение? Минимальный буфер, статистика пакетов и CDN, который можно настроить на ходу. Если логи продолжают кричать "ой", до следующей итерации всего строка кода. Сделаем прототип местом, где можно ошибаться и не бояться. Никаких раздумий, просто отвечаю: Понял. CDN на границе с микробуфером, логируем всё, находим этот "золотой сектор", где кодек ещё выглядит неплохо, но полоса начинает шататься. Вот где мы и поймаем реальный узкий момент, когда логи начнут орать. Прототипируем, быстро ломаем, итерируем, повторяем.
Конечно, давай держать буфер в узких пределах и делать логи максимально подробными. Сделай быстрый прототип, следи за статистикой и запускай механизм быстрого реагирования на сбои. Настоящее узкое место выявится гораздо быстрее, чем покажет любая схема.