
Смотрим кино вместе на своём сервере: как заставить плееры идти в ногу и не дёргать картинку
Друг в другом городе, вы оба хотите досмотреть сезон. Обычно это заканчивается одним из двух сценариев. Либо демонстрация экрана в Discord: картинка мылится, звук сжат до стерео, а у второго зрителя всё безбожно фризит. Либо обратный отсчёт «на счёт три жмём плей», после чего через десять минут выясняется, что у одного диалог уже на пару секунд впереди.Я сделал совместный просмотр в своём self-hosted медиацентре Avalon MediaCard. У каждого участника идёт оригинальный поток без пережатия напрямую с сервера, а бэкенд следит только за тем, чтобы все зрители находились ровно в одной точке фильма. А если это сериал, комната никуда не исчезает: она сохраняется вместе с текущей серией и секундой, чтобы в следующий раз можно было продолжить ровно с того же места.С первого раза гладко это не заработало: в процессе отладки я поймал баг, который превращал просмотр в слайд-шоу из одного кадра в секунду. О том, как устроена эта система снаружи, почему микроускорение лучше перемотки и на какие грабли я наступил под капотом рассказываю в статье. Читать далее